MySql字符串拆分实现split功能(字段分割转列)

需求描述
实现的sql
案例演示
字符串拆分: SUBSTRING_INDEX(str, delim, count)
替换函数:replace( str, from_str, to_str)
获取字符串长度:LENGTH( str )
实现的原理解析
实现sql
正式的原理解析
Step1:首先获取最后需被拆分成多少个字符串,利用 help_topic_id 来模拟遍历 第n个字符串。
Step2:根据“,”逗号来拆分字符串,此处利用 SUBSTRING_INDEX(str, delim, count) 函数,最后把结果赋值给 num 字段。
扩展:判断外部值是否在 num列值中
find_in_set
instr

需求描述

数据库中 num字段值为:
在这里插入图片描述
实现的效果:需要将一行数据变成多行

实现的sql

SELECT SUBSTRING_INDEX(SUBSTRING_INDEX('7654,7698,7782,7788',',',help_topic_id+1),',',-1) AS num 
FROM mysql.help_topic 
WHERE help_topic_id < LENGTH('7654,7698,7782,7788')-LENGTH(REPLACE('7654,7698,7782,7788',',',''))+1

案例演示

CREATE TABLE `company` (
`id` int(20) DEFAULT NULL,
`name` varchar(100) DEFAULT NULL,
`shareholder` varchar(100) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `company` VALUES ('1', '阿里巴巴', '马云');
INSERT INTO `company` VALUES ('2', '淘宝', '马云,孙正义');

1、原始数据演示

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL中,可以使用SUBSTRING_INDEX函数来字符串。该函数的语法是SUBSTRING_INDEX(str, delim, count),其中str是要分的字符串,delim是分隔符,count是要返回的子字符串的数量。通过将help_topic_id与字符串长度和分隔符数量进行计算,可以模拟遍历并获取分后的子字符串。\[1\] 如果要判断外部值是否在分后的子字符串中,可以使用find_in_set或instr函数。find_in_set函数用于在逗号分隔的字符串中查找指定的值,而instr函数用于在字符串中查找指定的子字符串。这样可以判断外部值是否存在于分后的子字符串中。\[2\] 如果要进行无分隔符的字符串分,可以参考MySQL字符串分(无分隔符的字符串截取)的方法。\[3\] #### 引用[.reference_title] - *1* *2* [MySql字符串实现split功能字段分割行)](https://blog.csdn.net/iijik55/article/details/126113522)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v4^insert_chatgpt"}} ] [.reference_item] - *3* [mysql字符串实现split功能](https://blog.csdn.net/weixin_30664615/article/details/97851845)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v4^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值