截取字符串
一、left(str,length)
从左边截取字符串,参数str:被截取的字符串,length:截取的长度
SELECT LEFT('程序不是年轻的专利,但是,他属于年轻。',9);
二、right(str,length)
从右边截取字符串,参数str:被截取的字符串,length:截取的长度
SELECT RIGHT('程序不是年轻的专利,但是,他属于年轻。',9);
三、截取特定长度的字符串
有两种用法: substring(str,pos)
参数str:被截取的字符串,pos从第几位开始截取,当为正数时从左开始数,当为负数时,从右开始数,从第几位开始截取,直至字符串结束;
substring(str,pos,length)
参数str:被截取的字符串,pos从第几位开始截取,当为正数时从左开始数,当为负数时,从右开始数,从第几位开始截取,向右截取length个字符。
1.从字符串第n个字符开始到结束
SELECT SUBSTRING('程序不是年轻的专利,但是,他属于年轻。',3);
2.从字符串第3个字符开始,只截取7位
SELECT SUBSTRING('程序不是年轻的专利,但是,他属于年轻。',3,7);
3.从字符串倒数第6个字符开始至结束
SELECT SUBSTRING('程序不是年轻的专利,但是,他属于年轻。',-6);
4.从字符串倒数第3个字符开始,只截取2位
SELECT SUBSTRING('程序不是年轻的专利,但是,他属于年轻。',-6,2);
四、按分隔符截取
SUBSTRING_INDEX(str,delim,count)
参数str:被截取的字符串;
参数delim:分隔符;
参数count:第几个分隔符,为正数时,截取从左往右第几个分隔符左边的内容,为负数时,截取从右往左第几个分隔符右边的内容。
1.截取第1个 "-"之前的所有字符
SELECT SUBSTRING_INDEX('100-200-300-400', '-', 1);
2.截取倒数第1个"-"之后的所有字符
SELECT SUBSTRING_INDEX('100-200-300-400', '-', -1);
3.截取中间的某个值
比如说要取100-200-300-400 的第二个,可以先取count为2的,再从右取count为-1
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX('100-200-300-400', '-', 2),'-', -1);
4.如果指定的分隔符找不到则返回整个字符串
SELECT SUBSTRING_INDEX('100-200-300-400', '-', 5);