MySQL截取字符串的方式有以下幾種:
1.left(str, length)
從左邊開始截取指定長度字符串。
mysql> select left('abcd4528',3); +--------------------+ | left('abcd4528',3) | +--------------------+ | abc | +--------------------+ 1 row in set (0.00 sec)
2.right(str, length)
從右邊開始截取指定長度字符串。
mysql> select right('abcd4528',3); +---------------------+ | right('abcd4528',3) | +---------------------+ | 528 | +---------------------+ 1 row in set (0.00 sec)
3.substring(str, pos, len)
從指定位置(pos)開始截取指定長度(len)的字符串。其中len可省略,省略時就從指定位置截取到結束的字符串,其中pos也可為負數。
1)省略len
mysql> select substring('abcd4528',3); +-------------------------+ | substring('abcd4528',3) | +-------------------------+ | cd4528 | +-------------------------+ 1 row in set (0.00 sec)
截取第3個位置后的所有字符串
2)不省略len
mysql> select substring('abcd4528',3,4); +---------------------------+ | substring('abcd4528',3,4) | +---------------------------+ | cd45 | +---------------------------+ 1 row in set (0.00 sec)
從第3個位置截取,只取4個字符
3)pos為負數,無len
mysql> select substring('abcd4528',-3); +--------------------------+ | substring('abcd4528',-3) | +--------------------------+ | 528 | +--------------------------+ 1 row in set (0.00 sec)
從右到左截取第3個位置后的所有字符串
3)pos為負數,有len
mysql> select substring('abcd4528',-3,2); +----------------------------+ | substring('abcd4528',-3,2) | +----------------------------+ | 52 | +----------------------------+ 1 row in set (0.00 sec)
從右到左第3個位置截取,只取2個字符
4.substring_index(str,s,count)
從字符s第count次的位置開始截取字符串,count可為符負數。若找不到指定字符,則返回整個字符串。
1)截取第二個 '.' 之前的所有字符(從左向右)
mysql> select substring_index('www.sqlstudy.com.cn', '.', 2); +------------------------------------------------+ | substring_index('www.sqlstudy.com.cn', '.', 2) | +------------------------------------------------+ | www.sqlstudy | +------------------------------------------------+ 1 row in set (0.00 sec)
2)截取第二個 '.' (倒數)之后的所有字符
mysql> select substring_index('www.sqlstudy.com.cn', '.', -2); +-------------------------------------------------+ | substring_index('www.sqlstudy.com.cn', '.', -2) | +-------------------------------------------------+ | com.cn | +-------------------------------------------------+ 1 row in set (0.00 sec)
3)找不到返回整個字符串
mysql> select substring_index('www.sqlstudy.com.cn', ',', 2); +------------------------------------------------+ | substring_index('www.sqlstudy.com.cn', ',', 2) | +------------------------------------------------+ | www.sqlstudy.com.cn | +------------------------------------------------+ 1 row in set (0.00 sec)