MySQL 提供豐富字符串函數,涵蓋大小寫轉換、截取、拼接、查找、替換、編碼、壓縮等場景。本文彙總高頻函數與示例。
| 分類 | 函數 | 示例/說明 |
|---|---|---|
| 大小寫 | UPPER/UCASE | UPPER('abc') → 'ABC' |
LOWER/LCASE | LOWER('ABC') → 'abc' | |
INITCAP | 首字母大寫(需 8.0+ 或自定義) | |
| 截取 | LEFT(str,len) | LEFT('foobar',3) → 'foo' |
RIGHT(str,len) | RIGHT('foobar',3) → 'bar' | |
SUBSTRING(str,pos,len) | SUBSTRING('foobar',2,3) → 'oob' | |
MID | SUBSTRING 別名 | |
| 拼接 | CONCAT(s1,s2...) | CONCAT('My','SQL') → 'MySQL',任一參數 NULL 結果 NULL |
CONCAT_WS(sep,s1,s2...) | CONCAT_WS(',','a','b') → 'a,b',忽略 NULL | |
GROUP_CONCAT | 聚合拼接,GROUP_CONCAT(name ORDER BY id SEPARATOR ';') | |
| 查找/位置 | LOCATE(sub,str,[pos]) | LOCATE('bar','foobarbar') → 4 |
INSTR(str,sub) | 參數順序相反,INSTR('foobarbar','bar') → 4 | |
POSITION(sub IN str) | 標準 SQL 寫法 | |
FIND_IN_SET(str,list) | FIND_IN_SET('b','a,b,c') → 2 | |
| 替換 | REPLACE(str,from,to) | REPLACE('abc','a','x') → 'xbc' |
INSERT(str,pos,len,new) | INSERT('Quadratic',3,4,'What') → 'QuWhattic' | |
REGEXP_REPLACE | 8.0+ 正則替換 | |
| 長度/編碼 | LENGTH/CHAR_LENGTH/BIT_LENGTH | 字節長/字符長/位長 |
| 壓縮/解壓 | COMPRESS/UNCOMPRESS | 需 zlib 支援,建議存 BLOB |
| 進制轉換 | HEX/UNHEX/CONV | HEX(255)='FF', CONV('a',16,2)='1010' |
| 格式化 | FORMAT(X,D) | FORMAT(12345.678,2) → '12,345.68' |
| 字段值提取 | ELT/FIELD | ELT(2,'a','b')='b', FIELD('b','a','b')=2 |
| 位導出 | EXPORT_SET(bits,on,off,sep,n) | EXPORT_SET(5,'Y','N',',',4)='Y,N,Y,N' |
| 文件讀取 | LOAD_FILE(path) | 需 FILE 權限,max_allowed_packet 限制 |
CONCAT 任一參數 NULL 導致整體 NULL,用 CONCAT_WS 或 IFNULL 規避。LOCATE/INSTR 區分大小寫**僅當至少一參數為二進制字符串**時。SUBSTRING 位置從 1 起算,負數表示從末尾倒數。GROUP_CONCAT 受 group_concat_max_len(默認 1024)限制,長文本需調大。