mysql截取字符串中间的值

以下文字转载自https://blog.csdn.net/kh6417/article/details/108056204

substring_index函数

substring_index(str,delim,count)

str: 要处理的字符串
delim: 分隔符
count: 计数

例如: str = http://www.51aaa.com

substring_index(str,’.’,1)
结果是:www

substring_index(str,’.’,2)
结果是:www.51aaa

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

substring_index(str,’.’,-1)
结果是:com

substring_index(str,’.’,-2)
结果是:51aaa.com

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

那么,如果我要中间的的aaa怎么办?
很简单的,两个方向:从右数第二个分隔符的右边全部,再从左数的第一个分隔符的左边:

先获取

substring_index(remarks,’1′,-1) as mm
结果是: aaa.com

然后是
substring_index(‘aaa.com’,’.’,1) as mm
结果是: aaa.com

合起来就是:
substring_index(substring_index(str,’1′,-1),’.’,1)

应用

数据表t_record的字段remark的值为字符串 1#56次
这里截取#和次之间的字符串,即获取数字56
下面sql的-1表示从重右侧数第一个#,1表示从左侧数起第一个次

select substring_index(substring_index(remarks,'#',-1),'次',1) from t_record
分享到:
赞(0)