西河刘卡车医 发表于 7 天前

SQL 截取函数

目次
1、substring
2、left
3、right
4、substring_index

1、substring

用途:字段截取从指定开始的字符开始,截取要的数;指定开始的字符数字可以用负的,指定开始的字符从后往前(向左)数,截取要的数不能为负。
语法格式:substring(field,n,m)
中文解释:substring(字段,从第n位开始,从n开始截取m位)
用法:
#从第1位开始截取,往后(向右)截取5位
SELECT SUBSTRING('12345678', 1, 5) AS A from dual;
#输出 '12345'

#从第2位开始截取,往后(向右)截取5位
SELECT SUBSTRING('12345678', 1, 5) AS A from dual;
#输出 '23456' https://img-blog.csdnimg.cn/direct/5e8952dcf7874267a29c83bffa51c89f.png
https://img-blog.csdnimg.cn/direct/93a486176d2f40a3995b247b728cf18a.png
#-2是从倒数第2位开始,往后(向右)截取5位,后面不够5位,有多少就截多少
SELECT SUBSTRING('12345678', -2, 5) AS A from dual;
#输出 '78'

#-4是从倒数第1位开始,往后(向右)截取3位,后面不够5位,有多少就截多少
SELECT SUBSTRING('12345678', -4, 3) AS A from dual;
#输出 '567' https://img-blog.csdnimg.cn/direct/a258457100c74ea9b7d5e0c584701bb8.png
https://img-blog.csdnimg.cn/direct/4b7636da70cd4392871c2ebc10c73880.png
2、left

用途:从字段左边开始截取向后(向右)指定数的字符。
语法格式:left(field,n)
中文解释:left(字段,从左开始截取到第n位)
用法:
#从左开始,截取2位
SELECT LEFT('12345678',2) A FROM dual
#输出'12'


#从左开始,截取4位
SELECT LEFT('12345678',4) A FROM dual
#输出'1234' https://img-blog.csdnimg.cn/direct/9dc8fa3849f74e8d99c08a45740e01e2.png
https://img-blog.csdnimg.cn/direct/f16173eac0b4437691dbb3f26c8c089b.png
3、right

用途:从字段右边开始截取向前(向左)指定数的字符。
语法格式:left(feld,n)
中文解释:left(字段,从右边开始截取到第n位)
用法:
#从右开始,向前(向左)截取3位
SELECT right('12345678', 3) AS A from dual;
#输出'678'

#从右开始,向前(向左)截取5位
SELECT right('12345678', 5) AS A from dual;
#输出'45678' https://img-blog.csdnimg.cn/direct/edd81d8049a3433694e792ca7d4f1a8f.png
https://img-blog.csdnimg.cn/direct/8a8ab4e35b9941bc91f10b3e0d811171.png

4、substring_index

用途:从指定分隔符出现的次数,开始截取向后(向右)全部的字符;负数就向前(向左)截取全部的字符。
语法格式:substring_index(feld,str,count)
中文解释:substring_index(字段,指定分隔符,截取指定分隔符出现第count次之后的全部字符)
用法:
#从左往右数指定分隔符 . 出现1次的地方,开始截取向后(向左)所有字符
SELECT substring_index('12345678.sd111.sa.51wf','.',1) AS A from dual;
#输出'12345678'

#从左往右数指定分隔符 . 出现3次的地方,开始截取向后(向左)所有字符
SELECT substring_index('12345678.sd111.sa.51wf','.',3) AS A from dual;
#输出'12345678.sd111.sa' https://img-blog.csdnimg.cn/direct/c9acc690cbc54903a7727b970c2b4237.png
https://img-blog.csdnimg.cn/direct/b1741304277d45a19418a5d048599c00.png
#从右往左数指定分隔符 . 出现1次的地方,开始截取向后(向左)所有字符
SELECT substring_index('12345678.sd111.sa.51wf','.',-1) AS A from dual;
#输出'51wf'

#从右往左数指定分隔符 . 出现3次的地方,开始截取向后(向左)所有字符
SELECT substring_index('12345678.sd111.sa.51wf','.',-3) AS A from dual;
#输出'sd111.sa.51wf' https://img-blog.csdnimg.cn/direct/2762ad2f128c47e2bb6c4a669bdc92ca.png
https://img-blog.csdnimg.cn/direct/8523a90fa6564d32a998cf5bfee2e529.png

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: SQL 截取函数