mysql中截取字符串的6個函數講解

mysql截取字符串的6個函數

1、LEFT(str,len)

從左邊開始截取,str:被截取字符串;len:截取長度

示例:

2、RIGHT(str,len)

從右邊開始截取,str:被截取字符串;len:截取長度

示例:

3、SUBSTRING(str, pos, len)

str:被截取字符串;pos:截取開始位置;len:截取長度(非必填:不填截取到最大長度)

示例1:

示例2:

4、SUBSTR(str, pos, len) 

與SUBSTRING(str, pos, len)函數的使用一樣

str:被截取字符串;pos:截取開始位置;len:截取長度(非必填:不填截取到最大長度)

示例1:

示例2:

5、MID(str, pos, len) 

與SUBSTRING(str, pos, len)函數的使用一樣

str:被截取字符串;pos:截取開始位置;len:截取長度(非必填:不填截取到最大長度)

示例1:

示例2:

 6、SUBSTRING_INDEX(str, delim, count)

  • str:被截取字符串;delim:截取數據依據的字符;
  • count截取數量(count>0就從左邊開始取,count<0就從右邊開始取)

示例1:

示例2:

示例3:

最後再說一個函數,截取字符串一般都會用到這個函數: LOCATE(substr,str)

作用: 查找字符串中指定字符的位置

  • substr搜索的字符
  • str字符串

str 字符串 中獲得 substr 字符 的位置(沒找到返回 0)

示例1:

示例2:

示例3:

mysql截取字符串中間的值

substring_index函數

substring_index(str,delim,count)
  • str: 要處理的字符串
  • delim: 分隔符
  • count: 計數

例如: str = www.51aaa.com

substring_index(str,'.',1)

結果是:www

substring_index(str,'.',2)

結果是:www.51aaa

也就是說,如果count是正數,那麼就是從左往右數,第N個分隔符的左邊的全部內容

substring_index(str,'.',-1)

結果是:com

substring_index(str,'.',-2)

結果是:51aaa.com

相反,如果是負數,那麼就是從右邊開始數,第N個分隔符右邊的所有內容

那麼,如果我要中間的的aaa怎麼辦?

很簡單的,兩個方向:從右數第二個分隔符的右邊全部,再從左數的第一個分隔符的左邊:

先獲取

substring_index(remarks,'1',-1) as mm

結果是: aaa.com

然後是

substring_index('aaa.com','.',1) as mm

結果是: aaa.com

合起來就是:

substring_index(substring_index(str,'1',-1),'.',1)

應用

數據表t_record的字段remark的值為字符串 1#56次

這裡截取#和次之間的字符串,即獲取數字56

下面sql的-1表示從重右側數第一個#,1表示從左側數起第一個次

select substring_index(substring_index(remarks,'#',-1),'次',1) from t_record

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。

推薦閱讀: