mysql中如何将存在分隔符号的一列进行拆分,成为多行

mysql中如何将存在分隔符号的一列进行拆分,成为多行如何将左图处理成右图效果

-- ****************************** 写在前面的说明 **********************************
/* student 为 上面左图的表名,表内字段名称见上图;
1.一个中文符号或者文字长为3,一个英文字母或者一个英文状态下得符号长为1  ;
2.函数substring_index(string,sep,num),即substring_index(字符串,分隔符,序号),参数说明:

			string:用于截取目标字符串的字符串。可为字段,表达式等;

			sep:分隔符,string存在且用于分割的字符,比如“,”、“.”等;

			num:序号,为非0整数。若为整数则表示从左到右数,若为负数则从右到左数。
	
	例子:比如“www.mysql.com”截取字符‘www’,分割符为“.”,从左到右序号为1,即substring_index("www.mysql.com",'.',1);若从右开始获取“com”则为序号为-1即substring_index("www.mysql.com",'.',-1)。
*/
-- ****************************** 写在前面的说明 **********************************
-- --------------------------------------------------------------------------------
-- ****************************** 具体的sql及注释********************************** 

SELECT
    a.sage,
		-- /*先正着取出几部分*/,然后在此基础再倒着取出最后那一部分
    substring_index( substring_index(a.sname,',',b.help_topic_id + 1),',' ,- 1  ) AS split_name
from
-- 将原数据先取出来  like中的符号与实际表里字段中的分割符对应
(select sname,sage from student where sname like '%,%') a  -- 如果表内还存在没有分隔符,就单个值的则直接select sname,sage from student 就行,总之目的是取出要处理的数据
join 
mysql.help_topic b   -- mysql帮助表 内含字符等 ,help_topic_id是从0开始的,其实使用的是它的计数功能       
ON  -- on的条件筛选结束后,如果改行此字段分割完后有三部分,则总共产生3条记录
b.help_topic_id < ( length(a.sname) - length(REPLACE (a.sname, ',', ''))  + 1 ) -- 实际算出的是分割后总共有几部分(此处是将长度为1的英文状态替换成空)
  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值