首頁 > 軟體

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

2022-08-29 14:04:23

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

以上為個人經驗,希望能給大家一個參考,也希望大家多多支援it145.com。


IT145.com E-mail:sddin#qq.com