WithCoderWithCoderWithCoder

mysql中截取字符串函数left()、right()、substring()、substring_inedx()

    最近在写PHP的接口服务,需要从Mysql数据库按日期(不带时间)查询数据,而数据库中字段是按照“日期+时间”存储的,因此想到了使用Mysql字符串截取函数截取日期部分。

    简单经过总结,在Mysql处理字符串截取的函数有以下几个可以使用:

    1. left(str, len),返回字符串str左侧的字符

    2. right(str, len),返回字符串str右侧的字符

    3. substring(str, pos)/ substring(str, pos, len),返回字符串str的子串

    4. substring_index(str, delim, count),根据定界符以及count,返回字符串str的子串

    下面简单介绍以上四个函数的用法:

    1. left(str, len)

    left() 函数返回字符串str左侧长度为 len 的字符,如下:   

-- 返回当前时间的日期(日期字符串左侧的10个字符)
SELECT LEFT(NOW(),10);

    结果如下图:    

    1-20042QA34a13.png   

    2. right(str, len)

    right() 函数返回字符串str左侧长度为 len 的字符,如下:   

-- 返回当前时间(日期字符串右侧的8个字符)
SELECT RIGHT(NOW(),8);

    结果如下:

    1-20042QAF53C.png

    3. substring(str, pos)/ substring(str, pos, len)

    substring() 函数返回字符串str从指定位置pos开始的子串,如果不指定截取的长度值len,则截取从位置pos开始到字符串str结束的全部子串;如果指定截取的长度len,则截取从位置pos开始长度为len的子串。

    注意:

    1. pos的索引值从1开始,而不是0

    2. 返回的子字符串包含pos位置的字符

    举例1:   

-- 返回从第2个字符开始到结束的子串
SELECT SUBSTRING('123456',2);

    1-20042QG235512.png

    举例2: 

-- 返回从第2个字符开始,截取长度为2的子串
SELECT SUBSTRING('123456',2,2);

    1-20042QG122135.png

    4. substring_index(str, delim, count)

    substring_index() 函数根据定界符delim以及匹配到的定界符的数量count,返回字符串str的子串。

    注意:

    1. 如果count为正值,则返回匹配到的第count个定界符(从左边开始左边的一切内容(不包含定界符)

    2. 如果count为负值,则返回匹配到的第count个定界符(从右边开始右边的一切内容(不包含定界符)。

    举例1:   

-- 以逗号','为定界符,返回匹配到的第2个定界符左边的所有内容
select substring_index('a,b,c,d',',',2);

    1-20042QH156204.png

    举例2:   

-- 以逗号','为定界符,返回匹配到的第2个定界符右边的所有内容
SELECT SUBSTRING_INDEX('a,b,c,d',',',-2);

    1-20042QH12Q30.png

欢迎分享交流,转载请注明出处:WithCoder » mysql中截取字符串函数left()、right()、substring()、substring_inedx()