mysql 字段逗号分割行转列操作
一、需求
某字段的值为 7654,7698,7782,7788
期望的效果:

二、实现语句
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX('7654,7698,7782,7788',',',help_topic_id+1),',',-1) AS num
FROM mysql.help_topic
WHERE help_topic_id < LENGTH('7654,7698,7782,7788')-LENGTH(REPLACE('7654,7698,7782,7788',',',''))+1;
三、知识点
1、mysql.help_topic 这个是什么?
mysql.help_topic 是 MySQL 数据库系统中的一个系统表,用于存储关于数据库、表、列等对象的帮助主题信息。
这里只用到 help_topic_id(帮助主题 ID) 这一个字段,这里实际只需要一个数字的序列,自己生成一个不用mysql.help_topic也完全没问题。
如果不是root用户需要赋权限 GRANT SELECT ON mysql.help_topic TO 'youruser'@'%'
flush privileges;
查询看看是什么样的数据(我们需要的就是第一列这个序号)

2、函数 字符串拆分: SUBSTRING_INDEX(str, delim, count)
参数解说 解释
str 需要拆分的字符串
delim 分隔符,通过某字符进行拆分
count 当 count 为正数,取第 n 个分隔符之前的所有字符; 当 count 为负数,取倒数第 n 个分隔符之后的所有字符。
例子:获取第2个以逗号为分隔符之前的所有字符。

四、实际语句
CREATE TABLE test_t (
id INT AUTO_INCREMENT ,
name VARCHAR(40) ,
text VARCHAR(800) ,
PRIMARY KEY ( id )
) ENGINE=INNODB DEFAULT CHARSET=UTF8;
插入数据
INSERT INTO `neirongdb`.`test_t` (`id`, `name`, `text`) VALUES ('1', '张三', '苹果');
INSERT INTO `neirongdb`.`test_t` (`id`, `name`, `text`) VALUES ('2', '李四', '香蕉,橘子');
INSERT INTO `neirongdb`.`test_t` (`id`, `name`, `text`) VALUES ('3', '王五', '西瓜,橙子,葡萄');
查询语句:
SELECT a.id,
a.name,
substring_index(substring_index(a.text, ',', b.help_topic_id + 1), ',', - 1) AS text
FROM test_t a INNER JOIN mysql.help_topic b
ON b.help_topic_id < (length(a.text) - length(REPLACE(a.text, ',', '')) + 1);
效果:

mysql 字段逗号分割行转列操作的更多相关文章
- 【mysql】逗号分割字段的行列转换
由于很多业务表因为历史原因或者性能原因,都使用了违反第一范式的设计模式,即同一个列中存储了多个属性值.这种模式下,应用常常需要将这个列依据分隔符进行分割,并得到列转行的结果:这里使用substring ...
- MySQL存储过程的动态行转列
MySQL存储过程中使用动态行转列 最近做项目关于数据报表处理,然而数据库存储格式和报表展现形式不同,需要进行一下行转列的操作,在做上一个项目的时候也看了一下,但是后来换了读取方式,也就没深入研究这个 ...
- Oracle行转列操作
有时候我们在展示表中数据的时候,需要将行转为列来显示,如以下形式: 原表结构展示如下:---------------------------产品名称 销售额 季度------------ ...
- Mysql或者Hive数据行变成列
对于mysql / hive 再进行统计的时候假设须要行变成列,能够使用函数 CASE 字段a WHEN 值b THEN c [WHEN d THEN e]* [ELSE f] END 当字段a=值 ...
- MYSQL开发技巧之行转列和列转行
行转列--两种方法第一种方法:行转列我们通常是使用交叉连接和子查询的方式做到,比如下面的例子,查询每个name的对应id的和mysql> select * from user; +----+-- ...
- mysql根据逗号分割的字符串去关联查询另外一个表的数据
1.说明 在做显示数据的时候,一个字段会存那种逗号分割的字符串,那如何去根据逗号分割字符串去查询另一个表的数据呢? 首先我们查看一下需要显示的数据 select * from company wher ...
- Sql 不确定列 行转列操作
做项目时,用到了汇总统计的行转列,且 表结构: 具体存储过程脚本如下: -- =============================================-- Author: -- C ...
- mysql sql语句:行转列问题
存在表score,记录学生的考试成绩,如下图所示: 现要求以 学生姓名,语文,数学,英语 这种格式显示学生成绩,如下图所示 具体步骤如下: 1.首先,使用case when函数输出单个课程的成绩 ca ...
- 动态往 datagridview 追加行、列操作
DataGridViewTextBoxColumn acCode = new DataGridViewTextBoxColumn(); acCode.Name = "acCode" ...
- 【mysql经典题目】行转列
参考:http://www.cnblogs.com/h07061108/p/mysql_questions.html#3806338 实现如下效果 CREATE TABLE IF NOT EXISTS ...
随机推荐
- 如何理解微服务体系结构中的 CQRS
本文翻译自 How To Understand CQRS In Microservices Architecture,原作者 OLEKSII. 问题描述 在典型的软件应用程序中,有一个负责写入和读取操 ...
- vertx的学习总结6之动态代理类和测试
Beyond the event bus 一.章节覆盖: 如何在事件总线之上公开服务 verticles和事件总线服务的异步测试 动态代理: MyService 接口 package porxy.te ...
- MySQL 分组排序后 → 如何取前N条或倒数N条
开心一刻 晚上,老婆辅导女儿写语文作业 填空题:春天来了,__绿了 女儿:春天来了,爸爸绿了 老婆一脸不悦地问道:你再说一遍,春天来了,什么玩意绿了? 女儿:春天来了,爸爸绿了呀 老婆很生气,但依旧温 ...
- Javascript Ajax总结——GET请求和POST请求
1.GET请求GET最常用于向服务器查询信息.可在URL末尾添加查询字符串参数.XHR中,传入open()方法的URL末尾的查询字符串必须经过正确的编码,使用encodeURIComponent()编 ...
- StringBuilder、StringBuffer
StringBuilder 1.concat() 拼接字符串 2.indexOf() 查找 3.replace() 替换 4.subString(1,2) 截取 0,1,2 1开始 2结束 Strin ...
- 性能测试常见面试题(Loadrunner)
https://blog.csdn.net/xiangxiupp/article/details/53862056
- 【OpenCV】 OpenCV 源码编译并实现 CUDA 加速 (Windows)
目录 1. 环境准备 1.1 软件环境 1. 2 源码下载 2. CMake编译项目 2.1 创建cmake项目 2.2 设置编译配置 2.3 解决异常 2.3.1 文件下载异常 2.3.2 解决CU ...
- Python——第五章:随机模块random
1.浮点数random.random() 的返回值是在 [0, 1)(左闭右开区间)内的随机浮点数.这意味着它可以取到 0,但不包括 1.所以,random.random() 可以返回 0,但不能返回 ...
- 如何用.net制作一个简易爬虫抓取华为应用市场数据
公司最近要做一款手机,手机需要制作一个应用市场.那么问题来了,自己制作应用市场,数据从哪来呢?作为一个创业型公司.搜集数据变成为了难题. 于是突然想到能不能通过程序去抓取别人应用市场的数据-- 那么我 ...
- Spring WebFlux 简介
本文基于 Spring Boot 2.6.0 基于之前提到的 Reactor 的出现,使得编写响应式程序成为可能.为此,Spring 的开发团队决定添加有关 Reactor 模型的网络层.这样做的话将 ...