MySQL函數學習(一)—–字元串函數

一、MySQL 字元串函數

\ 函 數 名 稱 作 用 完 成
1 LENGTH 計算字元串位元組長度
2 CONCAT 合併字元串函數,返回結果為連接參數產生的字元串,參數可以是一個或多個
3 INSERT 替換字元串函數
4 LOWER 將字元串中的字母轉換為小寫
4 UPPER 將字元串中的字母轉換為大寫
5 LEFT 從左側字截取符串,返回字元串左邊的若干個字元
5 RIGHT 從右側字截取符串,返回字元串右邊的若干個字元
6 TRIM 刪除字元串左右兩側的空格
7 REPLACE 字元串替換函數,返回替換後的新字元串
8 SUBSTRING 截取字元串,返回從指定位置開始的指定長度的字元換
9 REVERSE 字元串反轉(逆序)函數,返回與原始字元串順序相反的字元串

1. CHAR_LENGTH、CHARACTER_LENGTH、LENGTH、OCTET_LENGTH 、BIT_LENGTH、~~UNCOMPRESSED_LENGTH~~

以上函數唯一參數都為欄位名字元串

1_length.jpg


  • CHAR_LENGTH等同於CHARACTER_LENGTH:用於計算字元串的字元長度
  • LENGTH等同於OCTET_LENGTH: 用於計算字元串的位元組長度
  • BIT_LENGTH:用於計算字元串位數

在第一行中,「三體第二部 」中一個漢字佔三個位元組,表一個字元,空格或數字字母也算一個字元,所以字元長度為6;
但空格或數字字母只佔一個位元組,所以位元組長度為16(15 + 1);
位數沒什麼好說的,這裡採用的是utf8,乘8;


2. CONCAT、CONCAT_WS、GROUP_CONCAT

2_concat與concat_ws.jpg


  • CONCATCONCAT_WS都能拼接多個字元串。
  • CONCATCONCAT_WS的區別主要在於:
    • concat只是單純的將各字元串連接出來,而concat_ws指定了唯一分隔符(第一個參數)
    • 在mysql中,concat拼接數組中若有null值,則拼接字元串結果為null; 而concat_ws只會將null值的字元串忽略,最終拼接字元結果不會為null(除非拼接的全為null)。所以一般情況下能不使用concat就不使用concat,避免某欄位值為null導致最終值為null

2_group_concat.jpg


  • GROUP_CONCAT 要搭配GROUP BY來使用,將某一分組的欄位的所有拼接一起,可排序,可使用separator指定分隔符。 與concat_ws一樣,若某欄位為null,最終結果只會忽略該欄位,不會為null。

3. INSERT

INSERT(str,pos,len,newstr):
str表處理的初始字元串,pos表從str的第幾位開始插入,len表插入的長度,newstr表插入的字元串。

3_INSERT.jpg


  • 可以理解為該函數為,把str的第pos位~len為替換為newstr
  • 當pos超過str長度時,會直接返回str作為結果。
  • 當len超過str長度時,會將pos位往後的替換為newstr

LAST_INSERT_ID(): 獲取最後插入的ID值


4. LOWER、UPPER

字元串大小寫的相互轉換

4_LOWER與UPPER.jpg


5. LEFT、RIGHT

取字元串從最左/右的若干各字元

5_LEFT與RIGHT.jpg


6. TRIM

TRIM(BOTH FROM str) 等同於 TRIM(str)::刪除左右倆側空格
TRIM(LEADING FROM str) 等同於 LTRIM(str): 刪除左側空格
TRIM(TRAILING FROM str) 等同於 RTRIM(str): 刪除右側空格


6_TRIM.jpg


7. REPLACE

REPLACE(str,from_str,to_str): 將str字元串中的from_str字元串替換為to_str

7_REPLACE.jpg


  • from_str和to_str不能為null,否則直接返回結果值為null。

8. SUBSTRING

SUBSTRING(str,pos)等同於SUBSTRING(str from pos): 取str第pos個字元後的字元串
SUBSTRING(str,pos,len)等同於SUBSTRING(str from pos for len): 取str第pos個字元後長度為len的字元串

8_SUBSTRING.jpg


  • pos為正數時表從第pos個字元開始取
  • pos為負數時表從倒數第pos個字元開始取

SUBSTRING_INDEX(str,delim,count): delim為分隔符,取str第count個分隔符前字元串

8_SUBSTRING_INDEX.jpg


9. REVERSE

REVERSE(str):反轉字元串

9_REVERSE.jpg