本文整理 MySQL 常用字符串函數的語法、說明與實戰範例,供開發查閱。
CHAR_LENGTH(str):返回字符數(多位元組字符計 1)。SELECT CHAR_LENGTH('MySQL'); -- 5CONCAT(s1,s2,...):拼接,任一參數為 NULL 則結果為 NULL。CONCAT_WS(sep, s1,s2,...):帶分隔符拼接,sep 為 NULL 則結果 NULL。SELECT CONCAT_WS('.','David','Tian'); -- David.TianINSERT(str, pos, len, newstr):從 pos 起替換 len 字符為 newstr。SELECT INSERT('Softtekian',2,4,'!@#$'); -- S!@#$ekianREPLACE(str, from_str, to_str):替換所有 from_str 為 to_str。SELECT REPLACE('xxx.mysql.com','x','w'); -- www.mysql.comLOWER(str) / LCASE(str):轉小寫UPPER(str) / UCASE(str):轉大寫LEFT(str, n):左起 n 字符RIGHT(str, n):右起 n 字符LPAD(str, len, padstr):左側填充至 lenRPAD(str, len, padstr):右側填充至 lenLTRIM(str)、RTRIM(str)、TRIM(str):去左右/雙側空格TRIM(remstr FROM str):去除兩端指定字符串SELECT TRIM('xy' FROM 'xyxyDxyDxyxy'); -- DxyDREPEAT(str, n):重複 n 次,n≤0 返回空串SPACE(n):n 個空格STRCMP(s1,s2):相等 0,s1SUBSTRING(str, pos, len) / MID(str, pos, len):pos 可為負(從尾部計)LOCATE(sub, str)、POSITION(sub IN str)、INSTR(str, sub):返回首次出現位置REVERSE(str):字符串反序ELT(n, s1,s2,...):返回第 n 個字符串FIELD(str, s1,s2,...):返回 str 在列表中的位置(從 1 起)FIND_IN_SET(str, strlist):strlist 為逗號分隔字符串,返回位置MAKE_SET(bits, s1,s2,...):bits 二進制位對應選擇字符串SELECT MAKE_SET(1|4,'hello','nice','world'); -- hello,world| 需求 | 推薦函數 |
|---|---|
| 拼接欄位 | CONCAT_WS(',', col1, col2) |
| 去除首尾空格 | TRIM(col) |
| 替換特定字符 | REPLACE(col, 'old', 'new') |
| 取前 N 字符 | LEFT(col, N) |
| 判斷子串是否存在 | LOCATE('sub', col) > 0 |
| 逗號分隔值查找 | FIND_IN_SET('val', csv_col) |