一、需求

某字段的值为 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 字段逗号分割行转列操作的更多相关文章

  1. 【mysql】逗号分割字段的行列转换

    由于很多业务表因为历史原因或者性能原因,都使用了违反第一范式的设计模式,即同一个列中存储了多个属性值.这种模式下,应用常常需要将这个列依据分隔符进行分割,并得到列转行的结果:这里使用substring ...

  2. MySQL存储过程的动态行转列

    MySQL存储过程中使用动态行转列 最近做项目关于数据报表处理,然而数据库存储格式和报表展现形式不同,需要进行一下行转列的操作,在做上一个项目的时候也看了一下,但是后来换了读取方式,也就没深入研究这个 ...

  3. Oracle行转列操作

    有时候我们在展示表中数据的时候,需要将行转为列来显示,如以下形式: 原表结构展示如下:---------------------------产品名称    销售额     季度------------ ...

  4. Mysql或者Hive数据行变成列

    对于mysql /  hive 再进行统计的时候假设须要行变成列,能够使用函数 CASE 字段a WHEN 值b THEN c [WHEN d THEN e]* [ELSE f] END 当字段a=值 ...

  5. MYSQL开发技巧之行转列和列转行

    行转列--两种方法第一种方法:行转列我们通常是使用交叉连接和子查询的方式做到,比如下面的例子,查询每个name的对应id的和mysql> select * from user; +----+-- ...

  6. mysql根据逗号分割的字符串去关联查询另外一个表的数据

    1.说明 在做显示数据的时候,一个字段会存那种逗号分割的字符串,那如何去根据逗号分割字符串去查询另一个表的数据呢? 首先我们查看一下需要显示的数据 select * from company wher ...

  7. Sql 不确定列 行转列操作

    做项目时,用到了汇总统计的行转列,且 表结构: 具体存储过程脚本如下: -- =============================================-- Author:  -- C ...

  8. mysql sql语句:行转列问题

    存在表score,记录学生的考试成绩,如下图所示: 现要求以 学生姓名,语文,数学,英语 这种格式显示学生成绩,如下图所示 具体步骤如下: 1.首先,使用case when函数输出单个课程的成绩 ca ...

  9. 动态往 datagridview 追加行、列操作

    DataGridViewTextBoxColumn acCode = new DataGridViewTextBoxColumn(); acCode.Name = "acCode" ...

  10. 【mysql经典题目】行转列

    参考:http://www.cnblogs.com/h07061108/p/mysql_questions.html#3806338 实现如下效果 CREATE TABLE IF NOT EXISTS ...

随机推荐

  1. StackGres 1.6,可私有部署的云原生数据库中间件平台工程

    StackGres 数据库平台工程简介 Enterprise Postgres made easy. On Kubernetes StackGres 是 Kubernetes 的全栈 PostgreS ...

  2. 有哪些可部署的, 无需编程的,基于WEB的数据可视化工具

    基于Web的数据可视化工具在当今数字化时代具有重要的作用,可以帮助企业和个人更好地理解和利用数据.以下是一些无需编程即可部署的基于Web的数据可视化工具,详细描述如下:Tableau Public: ...

  3. 3D 高斯喷溅 🤗 为什么图形永远不会相同

    高斯喷溅 (Gaussian Splatting) 技术是一种翻天覆地的渲染手段,能够以 144 帧每秒的速度渲染出高质量的场景,这和传统的图形处理流程截然不同 这种将高斯数据转换成图像的过程,与训练 ...

  4. 文档理解的新时代:LayOutLM模型的全方位解读

    一.引言 在现代文档处理和信息提取领域,机器学习模型的作用日益凸显.特别是在自然语言处理(NLP)技术快速发展的背景下,如何让机器更加精准地理解和处理复杂文档成为了一个挑战.文档不仅包含文本信息,还包 ...

  5. Codeforces Round #426 (Div. 2) problem B

    B. The Festive Evening time limit per test 1 second memory limit per test 256 megabytes input standa ...

  6. JXNU acm选拔赛 不安全字符串

    不安全字符串 Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 65535/32768K (Java/Other) Total Submis ...

  7. 【UniApp】-uni-app-自定义组件

    前言 经过上个章节的介绍,大家可以了解到 uni-app-网络请求的基本使用方法 那本章节来给大家介绍一下 uni-app-自定义组件 的基本使用方法 原本打算是直接写项目的,在写项目之前还有个内容需 ...

  8. 【scikit-learn基础】--『监督学习』之 LASSO回归

    LASSO(Least Absolute Shrinkage and Selection Operator)回归模型一般都是用英文缩写表示,硬要翻译的话,可翻译为 最小绝对收缩和选择算子. 它是一种线 ...

  9. int和String的相互转换

  10. 某RBAC管理系统审计

    某RBAC管理系统审计 前言 这个管理系统的审计我去年就开始了但烂尾了,那时候太热闹了log4j2,cs的cve反制等等.这个都给忘了,所以本篇可能有些图有点老,现在就是旧图没一个个换遇到的新的就加上 ...