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

本文详细介绍了在MySQL中如何使用SUBSTRING_INDEX函数处理字符串,特别是在数据分析和数据分组场景下,如何通过该函数实现类似Java中的split效果。文中提供了一个具体的SQL查询示例,展示了如何根据自定义的索引长度对字符串进行切割,并给出了创建自增ID索引表的建议,以避免依赖系统内置表可能带来的权限问题。
摘要由CSDN通过智能技术生成

背景:我们在做数据分析,或者数据分组时经常会遇到一种如下情况
在这里插入图片描述
这里的‘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。
结果:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值