MySQL 截取字符串
MySQL 截取字符串常用的函数有:left(),right(),substring(),substring_index(),locate()
1.LEFT(str,length)
截取字符串 str 左侧 length 长度的字符串
例:
SELECT LEFT("data_service",4) AS example
结果:
data
2.RIGHT(str,length)
截取字符串str 右侧 length 长度的字符串
例:
SELECT RIGHT("data_service",7) AS example
结果:
service
3.SUBSTRING()
substr() 和substring() 有相同的功能
- 3.1 SUBSTRING(str FROM pos FOR len)
从str的pos 位置开始截取len长度的字符串,与之相似的是SUBSTRING(str,pos,len)
例:
SELECT SUBSTRING("data_service" FROM 1 FOR 4);
结果:
data
- 3.2 SUBSTRING(str FROM pos)
截取str中pos位置到结尾的字符串,与之相似的是SUBSTRING(str,pos)
例:
SELECT SUBSTR("data_service" FROM 6);
结果:
service
注:pos的值可以为负值,表示从字符串结尾,向前计数;但len不能为负值
4.SUBSTRING_INDEX(str,delim,count)
根绝字符串的分割标志对字符串进行截取
delim: delimiter 分隔符,定界符
count: 为正值时,从字符串开头,顺序计数,按照分隔符向前截取字符串;为负值时,从字符串结尾,向前计数,按照分隔符向后截取字符串。
- 4.1例:
SELECT SUBSTRING_INDEX("data_service_wyf","_",1)
结果:
data
- 4.2例:
SELECT SUBSTRING_INDEX("data_service_wyf","_",2)
结果:
data_service
- 4.3例:
SELECT SUBSTRING_INDEX("data_service_wyf","_",-2)
结果:
service_wyf
注:如果字符串中找不到分隔符delim时,会返回整个字符串
5.LOCATE(substr,str,pos)
从str字符串的pos位置开始查找字符串substr在str中第一个出现的位置;其中pos可以省略,当省略时,默认值为0.
- 5.1 例:
SELECT LOCATE("e","data_service_wyf")
结果:
7
- 5.2 例:
SELECT LOCATE("e","data_service_wyf",8)
结果:
12
问题
- substring()和substr()有什么区别呢?如果没有区别,为什么会有两个相同的函数呢?希望有人能够解答,谢谢