Mysql之一行转多行(列转行)--- help_topic

用到的知识点:

substring_index(str,delim,count)

      str:要处理的字符串

      delim:分隔符

      count:计数

例子:str=www.wikibt.com

      substring_index(str,'.',1)

      结果是:www

      substring_index(str,'.',2)

      结果是:www.wikibt

      也就是说,如果count是正数,那么就是从左往右数,第N个分隔符的左边的全部内容

      相反,如果是负数,那么就是从右边开始数,第N个分隔符右边的所有内容,如:

      substring_index(str,'.',-2)

      结果为:wikibt.com

length(str)   获取字符串str的长度

mysql.help_topic

这个表是mysql自带的一个表,具体表的内容可以使用select * from mysql.help_topic;

查看。这里我们只是使用到了他的help_topic_id字段,因为他的help_topic_id字段是从0开始自增的。

原数据如下,将jsondata转成多行,以逗号分割

SELECT
	tp.id,
	substring_index( SUBSTRING_INDEX( tp.jsondata, ',', hp.help_topic_id + 1 ), ',', - 1 ) json 
FROM
	testjson tp
	LEFT JOIN mysql.help_topic hp ON hp.help_topic_id <= length( tp.jsondata ) - length( REPLACE ( tp.jsondata, ',', '' ) );

 结果如下:

注意:实际使用时,开发环境未必和生产环境的权限一致,此时一定要以生产环境为主,确认生产环境是否有mysql数据库的使用权限,如果没有,创建一个help_topic表,只需要有help_topic_id列,即可满足该功能。

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
fn_split 是 MySQL 中的一种函数,用于将一行的数据换为多列数据。 在某些情况下,我们需要将一行的数据拆分成多个列,以便更好地分析和处理数据。fn_split 函数就提供了这样的功能。 fn_split 函数接受两个参数:待拆分的字符串以及拆分的分隔符。它会将字符串按照指定的分隔符进行分割,并返回一个包含拆分后的多个列的结果集。 举个例子,假设我们有一个存储着学生信息的表,其中一列是学生的兴趣爱好,多个兴趣爱好之间用逗号分隔。如果我们想要将每个学生的兴趣爱好拆分成单独的列,就可以使用 fn_split 函数。 使用方法如下: SELECT student_id, fn_split(hobbies, ',') AS hobby FROM students; 这样,我们就可以得到一个包含两列的结果集:学生id和拆分后的兴趣爱好。如果学生的兴趣爱好是“篮球,足球,游泳”,那么结果集中的每一行都会包含学生id和拆分后的单个兴趣爱好。 通过使用 fn_split 函数,我们可以更方便地进行数据分析和处理,同时也提高了数据的可读性和易用性。 需要注意的是,fn_split 函数是自定义函数,并非 MySQL 的内置函数。因此,在使用之前需要确保该函数已经被正确定义和添加到 MySQL 数据库中。 总而言之,fn_split 函数在 MySQL 中的行转列操作中起到了重要的作用,可以有效地将一行的数据拆分成多列,方便我们进行数据处理和分析。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值