一、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~~
以上函式唯一引數都為
欄位名
或字串
CHAR_LENGTH
等同於CHARACTER_LENGTH
:用於計算字串的字元長度LENGTH
等同於OCTET_LENGTH
: 用於計算字串的位元組長度BIT_LENGTH
:用於計算字串位數
在第一行中,“三體第二部 ”中一個漢字佔三個位元組,表一個字元,空格或數字字母也算一個字元,所以字元長度為6;
但空格或數字字母只佔一個位元組,所以位元組長度為16(15 + 1);
位數沒什麼好說的,這裡採用的是utf8,乘8;
2. CONCAT、CONCAT_WS、GROUP_CONCAT
CONCAT
與CONCAT_WS
都能拼接多個字串。
CONCAT
與CONCAT_WS
的區別主要在於:- concat只是單純的將各字串連線出來,而concat_ws指定了唯一分隔符(第一個引數)
- 在mysql中,concat拼接陣列中若有null值,則拼接字串結果為null; 而concat_ws只會將null值的字串忽略,最終拼接字元結果不會為null(除非拼接的全為null)。所以一般情況下能不使用concat就不使用concat,避免某欄位值為null導致最終值為null
GROUP_CONCAT
要搭配GROUP BY來使用,將某一分組的欄位的所有拼接一起,可排序
,可使用separator
指定分隔符。 與concat_ws一樣,若某欄位為null,最終結果只會忽略該欄位,不會為null。
3. INSERT
INSERT(str,pos,len,newstr)
:
str表處理的初始字串,pos表從str的第幾位開始插入,len表插入的長度,newstr表插入的字串。
- 可以理解為該函式為,把str的第pos位~len為替換為newstr
- 當pos超過str長度時,會直接返回str作為結果。
- 當len超過str長度時,會將pos位往後的替換為newstr
LAST_INSERT_ID(): 獲取最後插入的ID值
4. LOWER、UPPER
字串大小寫的相互轉換
5. LEFT、RIGHT
取字串從最左/右的若干各字元
6. TRIM
TRIM(BOTH FROM str)
等同於TRIM(str)
::刪除左右倆側空格
TRIM(LEADING FROM str)
等同於LTRIM(str)
: 刪除左側空格
TRIM(TRAILING FROM str)
等同於RTRIM(str)
: 刪除右側空格
7. REPLACE
REPLACE(str,from_str,to_str)
: 將str字串中的from_str字串替換為to_str
- 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的字串
- pos為正數時表從第pos個字元開始取
- pos為負數時表從倒數第pos個字元開始取
SUBSTRING_INDEX(str,delim,count)
: delim為分隔符,取str第count個分隔符前字串
9. REVERSE
REVERSE(str)
:反轉字串