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);

 

posted @ 2022-08-12 10:38  诟笑  阅读(30400)  评论(0编辑  收藏  举报