您的位置:首页 > 教育 > 培训 > 环球新军事_高端品牌名字大全_百度seo自动优化_什么是全网营销推广

环球新军事_高端品牌名字大全_百度seo自动优化_什么是全网营销推广

2024/10/5 21:20:39 来源:https://blog.csdn.net/weixin_44340836/article/details/142458417  浏览:    关键词:环球新军事_高端品牌名字大全_百度seo自动优化_什么是全网营销推广
环球新军事_高端品牌名字大全_百度seo自动优化_什么是全网营销推广

原表:

在这里插入图片描述

结果:

在这里插入图片描述

方法一:如果每条数据的被逗号分隔的数量在637条以内,使用 mysql.help_topic(mysql自带的表,只有637个序号)。

select a.id,a.enclosure_ids,SUBSTRING_INDEX(SUBSTRING_INDEX(a.enclosure_ids,',',b.help_topic_id+1),',',-1) split  
from am_voucher a left join mysql.help_topic b 
ON b.help_topic_id<(length(a.enclosure_ids)-length(REPLACE(a.enclosure_ids,',',''))+1) 

方法二:如果逗号数量在636个以外,并且原表行数超过逗号分隔的数量。

SELECT id,enclosure_ids,SUBSTRING_INDEX( SUBSTRING_INDEX( enclosure_ids,',',rownums),',', - 1) AS split 
FROM am_voucher a join 
(SELECT @rownum := @rownum+1 AS rownums FROM (SELECT @rownum :=0) a,am_voucher b) b 
on rownums <= (length(a.enclosure_ids)-length(REPLACE(a.enclosure_ids,',',''))+1) 

弊端:1.会忽略null值。2.(重要)假设原表中只有2行数据,但是其中一个字符串被逗号分割为大于2条的数据,那么 split 所在的那条数据就只会拆分出前2条数据。

逻辑解释:

1.length(a.enclosure_ids)-length(REPLACE(a.enclosure_ids,‘,’,‘’))+1
字段原长度 - 字段去除掉逗号的长度 + 1,得到通过逗号分割后有几条数据。

2.SUBSTRING_INDEX(SUBSTRING_INDEX(a.enclosure_ids,‘,’,b.help_topic_id+1),‘,’,-1)
里面的SUBSTRING_INDEX是从每个逗号循环截取字符串,如下
在这里插入图片描述
外面的SUBSTRING_INDEX是根据里面的数据取最后一个逗号后面的数据。
在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com