Sql 字符串截取
注意 不同数据库内置函数名称或有差异,可参考
1.从左至右截取
①使用left()函数可以从左至右对字符串进行截取
语法:LEFT(str,length)
str是要进行截取的字符串,length是要截取的长度(数字), left('abcdefg',3) 即表示从左开始截取包含第一位到第三位字符串的所有内容
例如:执行 select left('abcdefg',3) 返回结果为 abc
②使用substr()函数进行截取
语法:SUBSTR(str,startPosition,returnLength)
str是要进行截取的字符串,startPosition(数字)是给定开始截取的位置,returnLength(数字)是指定要截取的长度;
若只给定substr一个数字参数如 substr(‘12345’,3),则默认该数字参数为开始截取的位置并返回其后所有字符,而LEFT函数则是只从左开始截取到指定的位置。
例如:
2.从右至左截取
使用right()函数可以从右至左对字符串进行截取
语法:RIGHT(str,length)
str是要进行截取的字符串,length是要截取的长度(数字), right('abcdefg',3) 即表示从右开始截取到第三位字符串的所有内容
例如:执行 select right('abcdefg',3) 返回结果为 efg
3.反转字符串截取后再反转还原
利用REVERSE()函数可以将字符串内容进行反转
例如 执行 select REVERSE('cba') 结果为 abc;一些情况可以使用这个函数反转截取后再反转。
4.截取指定指定字符或字符串之间的内容
mysql:
在mysql中可使用SUBSTRING_INDEX()函数来截取指定字符或字符串的内容;
语法:SUBSTRING_INDEX(str,delim,count)
str是要进行截取的字符串;delim是指定的分割字符或字符串;count是delim在对应str内容中出现的次数,count为正数表示从左至右截取n次之前的所有内容,为负数表示从右至左截取n次之前的内容;
例如:
因此,针对要截取指定字符之间的内容,可以先使用SUBSTRING_INDEX函数 分两次 截取指定字符左边或右边的所有字符
例如,截取 '_432_231_abc_2_e2' 中的 abc:
第一步:根据分隔符 _ 从左至右截取第四个分隔符 _ 前包含 abc的所有内容:
SELECT SUBSTRING_INDEX('_432_231_abc_2_e2','_',4);
第二步:再使用SUBSTRING_INDEX函数根据分隔符 _ 从右至左截取 第一步获取的内容中 第一个分隔符 _ 前的所有内容
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX('_432_231_abc_2_e2','_',4),'_',-1);