SQL截取字符串
截取字符串在各个数据库的函数名称不一样
- mysql:substr() , substring()
- oracle : substr()
- sql server : substring()
此处以mysql为例:
1、left(name,4)截取左边的4个字符
SELECT LEFT(201809,4) 年
结果:2018
2、right(name,2)截取右边的2个字符
SELECT RIGHT(201809,2) 月份
结果:09
3、SUBSTRING(name,5,3) 截取name这个字段 从第五个字符开始 只截取之后的3个字符
SELECT SUBSTRING('字符串截取示例',5,3)
结果:取示例
4、SUBSTRING(name,3) 截取name这个字段 从第三个字符开始,之后的所有个字符
SELECT SUBSTRING('字符串截取示例',3)
结果:串截取示例
5、SUBSTRING(name, -4) 截取name这个字段的第 4 个字符位置(倒数)开始取,直到结束
SELECT SUBSTRING('字符串截取示例',-4)
结果:截取示例
6、SUBSTRING(name, -4,2) 截取name这个字段的第 4 个字符位置(倒数)开始取,只截取之后的2个字符
SELECT SUBSTRING('字符串截取示例',-4,2)
结果:截取
注意:我们注意到在函数 substring(str,开始位置, 截取长度)中, ‘开始位置’ 可以是负值,但 ‘截取长度 ’不能取负值。
7、substring_index(‘www.baidu.com’, ‘.’, 2) 截取第二个 ‘.’ 之前的所有字符
SELECT substring_index('www.baidu.com', '.', 2)
结果:www.baidu
8、substring_index(‘www.baidu.com’, ‘.’, -2) 截取第二个 ‘.’ (倒数)之后的所有字符
SELECT substring_index('www.baidu.com', '.', -2)
结果:baidu.com
9、SUBSTR(name, 1, CHAR_LENGTH(name)-3) 截取name字段,取除name字段后三位的所有字符
SELECT SUBSTR('字符串截取示例', 1, CHAR_LENGTH('字符串截取示例')-3)
结果:字符串截