Mysql 根据分隔符拆分某列分割成多条记录 学习教程

  1. 准备表

创建表student_name

create table student_name
(
name varchar(20)
);

插入模拟数据

insert into student_name(name) values('小红,小黄,小蓝'),('小绿,小青,小靛,小紫');
  1. 如图
    在这里插入图片描述
  2. 通过sql完成水平拆分
select distinct 
SUBSTRING_INDEX(SUBSTRING_INDEX(a.`name`,',',b.help_topic_id + 1),',', -1 ) name
from student_name a
join mysql.help_topic b 
on b.help_topic_id < (LENGTH(a.name) - length(replace(a.name,',','')) + 1) 

用法规则:

 substring_index(“待截取字符串”,“截取数据依据的字符”,截取字符的位置N)
 mysql.help_topic 【mysql 默认自增序列表,如果没有看到mysql数据库因为没有权限访问】

例子:str=“blog.csdn.net/Charles_Timber”

  substring_index(str,'.',1)
  
  结果是:blog

  substring_index(str,'.',2)

  结果是:blog.csdn

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

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

  substring_index(str,'.',-2)

  结果为:csdn.net/Charles_Timber

 有人会问,如果我要中间的的 csdn 怎么办?

 很简单的,两个方向:

  从右数第二个分隔符的右边全部,再从左数的第一个分隔符的左边:
  substring_index(substring_index(str,'.',-2),'.',1)
  1. 查询结果
    在这里插入图片描述
    注意:如果要求拆分成多行必选要关联mysql自增表格
  • 7
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值