mysql根据逗号将一行数据拆分成多行数据

 更新时间:2021年12月13日 11:52:59   作者:好奇新  
本文主要介绍了mysql根据逗号将一行数据拆分成多行数据,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

分隔效果

-- 分隔前
1,2,3,4
-- 分隔后
1
2
3
4

分隔命令行

SELECT 
 substring_index(substring_index('1,2,3,4',',', b.help_topic_id + 1), ',', -1) result
FROM 
 mysql.help_topic b
where 
 b.help_topic_id <  (LENGTH('1,2,3,4') - LENGTH(REPLACE('1,2,3,4', ',', '')) + 1);

命令行解释

help_topic本身是Mysql一个帮助解释注释表,用于解释Mysql各种专有名词,由于这张表数据ID是从0顺序增加的,方便我们用于计数,但是8.0.17版本的只有686条数据,超过这个数字,我们就需要己自定义一张表

可以用做计数的临时表,查询的语句只会用help_topic计数,超出的部分其实都是脏数据

b.help_topic_id < 获取分隔后的总行数

b.help_topic_id <  (LENGTH('1,2,3,4') - LENGTH(REPLACE('1,2,3,4', ',', '')) + 1)

这个语句其实是一个遍历,help_topic_id 从0开始递增到

按照顺序截取,先截取第 n 个分隔符之前的所有字符,再截取字符串最后一位

1    —— 1
1,2  —— 2
1,2,3 —— 3
1,2,3,4 —— 4

mysql.help_topic 无权限处理办法

mysql.help_topic 的作用是对 SUBSTRING_INDEX 函数出来的数据(也就是按照分割符分割出来的)数据连接起来做笛卡尔积。

如果 mysql.help_topic 没有权限,可以自己创建一张临时表,用来与要查询的表连接查询。

获取该字段最多可以分割成为几个字符串:

SELECT MAX(LENGTH(a.`name`) - LENGTH(REPLACE(a.`name`, ',', '' )) + 1) FROM `test` a;

创建临时表,并给临时表添加数据:

注意:

  • 临时表必须有一列从 0 或者 1 开始的自增数据
  • 临时表表名随意,字段可以只有一个
  • 临时表示的数据量必须比 MAX(LENGTH(a.name) - LENGTH(REPLACE(a.name, ',', '' )) + 1) 的值大

涉及函数

substring_index(str,delim,count)

参数名 解释
str 需要拆分的字符串
delim 分隔符,通过某字符进行拆分
count 当 count 为正数,取第 n 个分隔符之前的所有字符; 当 count 为负数,取倒数第 n 个分隔符之后的所有字符。

replace( str, from_str, to_str)

参数名 解释
str 需要进行替换的字符串
from_str 需要被替换的字符串
to_str 需要替换的字符串

length(str) 获取字符串长度

到此这篇关于mysql根据逗号将一行数据拆分成多行数据的文章就介绍到这了,更多相关mysql根据逗号拆分内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Mysql查看死锁与解除死锁的深入讲解

    Mysql查看死锁与解除死锁的深入讲解

    这篇文章主要给大家介绍了关于Mysql查看死锁与解除死锁的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • Mysql 默认字符集设置方法(免安装版)

    Mysql 默认字符集设置方法(免安装版)

    有些时候我们在使用非安装版的mysql是需要设置默认字符集的时候,就需要这样的修改了。安装版的可以选择的。
    2009-03-03
  • MySQL正则表达式REGEXP使用详解

    MySQL正则表达式REGEXP使用详解

    MySQL中正则表达式通常被用来检索或替换符合某个模式的文本内容,根据指定的匹配模式匹配文中符合要求的特殊字符串,下面这篇文章主要给大家介绍了关于MySQL正则表达式REGEXP使用的相关资料,需要的朋友可以参考下
    2022-09-09
  • 关于mysql查询字符集不匹配问题的解决方法

    关于mysql查询字符集不匹配问题的解决方法

    这篇文章主要给大家介绍了关于mysql查询字符集不匹配问题的解决方法,文中通过示例代码给大家介绍的非常详细,对同样遇到这个问题的朋友们具有一定的参考学习价值,需要的朋友们下面跟着小编来一起学习学习吧。
    2017-08-08
  • mysql数据库隔离级别详解

    mysql数据库隔离级别详解

    SQL标准定义了4类隔离级别,包括了一些具体规则,用来限定事务内外的哪些改变是可见的,哪些是不可见的,下面这篇文章主要给大家介绍了关于mysql数据库隔离级别的相关资料,需要的朋友可以参考下
    2022-06-06
  • mysql数据存放的位置在哪

    mysql数据存放的位置在哪

    在本篇文章里小编给大家分享的是关于mysql数据存放的位置及相关知识点内容,需要的朋友们可以参考下。
    2020-07-07
  • sql四大排名函数之ROW_NUMBER、RANK、DENSE_RANK、NTILE使用介绍

    sql四大排名函数之ROW_NUMBER、RANK、DENSE_RANK、NTILE使用介绍

    这篇文章主要介绍了sql四大排名函数之ROW_NUMBER、RANK、DENSE_RANK、NTILE使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • Mac下忘记mysql密码重新设置密码的图文教程

    Mac下忘记mysql密码重新设置密码的图文教程

    这篇文章主要介绍了Mac下忘记mysql密码重新设置密码的教程,非常不错具有参考借鉴价值,需要的朋友可以参考下
    2016-12-12
  • Ubuntu18.04 安装mysql8.0.11的图文教程

    Ubuntu18.04 安装mysql8.0.11的图文教程

    本文通过图文并茂的形式给大家介绍了Ubuntu18.04 安装mysql8.0.11的方法,非常不错,具有一定的参考借鉴价值,需要的的朋友参考下吧
    2018-07-07
  • mysql enum字段类型的谨慎使用

    mysql enum字段类型的谨慎使用

    本文主要介绍了mysql enum字段类型使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07

最新评论