MySQL逗号分隔数据库字段并拆分多列

MySQL逗号分隔数据库字段并拆分多列

数据表格

@姓名@字段
张三1,2,3,4,5
李四1,2,3

查询语句

  1. 将字符串 str 以 str1 进行分隔,并获取对应 num 位置字符串;
SUBSTRING_INDEX(str,str1,num)
SUBSTRING_INDEX('a,b,c,d,e',',',1)
获取结果为a
SUBSTRING_INDEX('a,b,c,d,e',',',3)
获取结果为c
SUBSTRING_INDEX('a,b,c,d,e',',',-1)
获取结果为e
  1. 将字符串 str 中的指定数据进行替换,str1 被替换字符串,str2 替换字符串;
REPLACE(str,str1,str2)
REPLACE('1,2,3,4,5',',','')
结果:12345
  1. 获取 str 字符串长度;
CHAR_LENGTH(str)
CHAR_LENGTH('1,2,3,4,5')
结果:9
  1. 逗号分隔并进行多列数据返回;
SELECT 
@姓名,SUBSTRING_INDEX(SUBSTRING_INDEX(@字段,',',n),',',-1) AS VALUE 
FROM 
`tableName`
JOIN
(SELECT 1 n UNION ALL SELECT 2  UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5)m 
ON CHAR_LENGTH(@字段) - CHAR_LENGTH(REPLACE(@字段,',','')) >= n -1

查询结果

姓名数据列
张三1
张三2
张三3
张三4
张三5
李四1
李四2
李四3
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值