mysql-字符串切割SUBSTRING_INDEX实现方法

背景:我们在做数据分析,或者数据分组时经常会遇到一种如下情况 这里的‘66,51,90,91,93’往往需要进行数据匹配查出对应的值,在java代码只要用split即可实现,而在mysql中则需要使用SUBSTRING_INDEX方法。 实现方法:

SELECT
		ss.id,
		ss.`name`,
		ss.material_cost,
		ss.third_party_platform_service_fee,
		ss.vat,
		SUBSTRING_INDEX( SUBSTRING_INDEX( ss.store_id_str, ,, i.id ), ,,- 1 ) AS num 
	FROM
		edw.bi_store_set ss,
		edw.bi_id_index i 
	WHERE
		i.id - 1 < LENGTH( ss.store_id_str )- LENGTH(
		REPLACE ( ss.store_id_str, ,,  ))+ 1

代码解释:这里是利用结果集里的字符串长度对字符串进行切割,edw.bi_id_index i是我自设的一个索引长度,里面存放数据如下: 建议你的最大值尽可能的长并且要连续。 很多搜素结果给的是使用 mysql自带的一个表里的id但有时候在生产上会受到权限限制等。所以建议使用自己建的一个自增id。 结果:

经验分享 程序员 微信小程序 职场和发展