MySQL 提供豐富的字符串處理函數,涵蓋大小寫轉換、截取、拼接、查找、替換、編碼、格式化等場景。本文按功能分類整理,附語法與範例,適合開發速查。
| 函數 | 語法 | 範例 | 結果 |
|---|---|---|---|
| LOWER / LCASE | LOWER(str) | LOWER('MySQL') | mysql |
| UPPER / UCASE | UPPER(str) | UPPER('mysql') | MYSQL |
| 函數 | 語法 | 說明 |
|---|---|---|
| LENGTH | LENGTH(str) | 字節長度 |
| CHAR_LENGTH / CHARACTER_LENGTH | CHAR_LENGTH(str) | 字符長度 (多字節計 1) |
| BIT_LENGTH | BIT_LENGTH(str) | 位長度 = LENGTH * 8 |
| 函數 | 語法 | 範例 | 結果 |
|---|---|---|---|
| CONCAT | CONCAT(str1, str2, ...) | CONCAT('My', 'SQL') | MySQL |
| CONCAT_WS | CONCAT_WS(sep, str1, str2, ...) | CONCAT_WS('-', '2023', '10', '15') | 2023-10-15 |
| REPEAT | REPEAT(str, count) | REPEAT('ab', 3) | ababab |
| 函數 | 語法 | 關鍵點 |
|---|---|---|
| SUBSTRING / MID | SUBSTRING(str, pos [, len]) | pos 從 1 起;負數從末尾倒數 |
| LEFT | LEFT(str, len) | 左側 len 字符 |
| RIGHT | RIGHT(str, len) | 右側 len 字符 |
| SUBSTRING_INDEX | SUBSTRING_INDEX(str, delim, count) | count>0 取左側;count<0 取右側 |
SELECT SUBSTRING_INDEX('www.mysql.com', '.', 2); -- www.mysql
SELECT SUBSTRING_INDEX('www.mysql.com', '.', -2); -- mysql.com
| 函數 | 語法 | 差異 |
|---|---|---|
| LOCATE / POSITION | LOCATE(substr, str [, pos]) | 參數順序:substr, str |
| INSTR | INSTR(str, substr) | 參數順序:str, substr (與 LOCATE 相反) |
| FIND_IN_SET | FIND_IN_SET(str, strlist) | strlist 為逗號分隔集合,返回 1-based 索引 |
| 函數 | 語法 | 範例 |
|---|---|---|
| REPLACE | REPLACE(str, from_str, to_str) | REPLACE('www.mysql.com', 'w', 'Ww') → WwWwWw.mysql.com |
| INSERT | INSERT(str, pos, len, newstr) | INSERT('Quadratic', 3, 4, 'What') → QuWhattic |
| REVERSE | REVERSE(str) | REVERSE('abc') → cba |
| 函數 | 語法 | 範例 |
|---|---|---|
| LPAD | LPAD(str, len, padstr) | LPAD('hi', 4, '??') → ??hi |
| RPAD | RPAD(str, len, padstr) | RPAD('hi', 5, '?') → hi??? |
| LTRIM | LTRIM(str) | 去除左側空格 |
| RTRIM | RTRIM(str) | 去除右側空格 |
| TRIM | TRIM([BOTH|LEADING|TRAILING] [remstr] FROM str) | TRIM(BOTH 'x' FROM 'xxxbarxxx') → bar |
| 函數 | 語法 | 範例 |
|---|---|---|
| ASCII | ASCII(str) | ASCII('A') → 65 |
| ORD | ORD(str) | 多字節字符編碼計算 |
| CHAR | CHAR(N, ...) | CHAR(77,121,83,81,76) → MySQL |
| HEX / UNHEX | HEX(str) / UNHEX(hex_str) | HEX('MySQL') → 4D7953514C |
| BIN / OCT | BIN(N) / OCT(N) | BIN(12) → 1100 |
| CONV | CONV(N, from_base, to_base) | CONV('a', 16, 2) → 1010 |
| 函數 | 語法 | 範例 |
|---|---|---|
| SPACE | SPACE(N) | SPACE(6) → 6 個空格 |
| QUOTE | QUOTE(str) | 轉義並加引號,可用於 SQL 構建 |
| SOUNDEX | SOUNDEX(str) | SOUNDEX('Hello') → H400 |
| ELT | ELT(N, str1, str2, ...) | ELT(2, 'a', 'b', 'c') → b |
| FIELD | FIELD(str, str1, str2, ...) | FIELD('b', 'a', 'b', 'c') → 2 |
| MAKE_SET | MAKE_SET(bits, str1, str2, ...) | MAKE_SET(1|4, 'a', 'b', 'c') → a,c |
| EXPORT_SET | EXPORT_SET(bits, on, off [, sep [, num]]) | EXPORT_SET(5, 'Y', 'N', ',', 4) → Y,N,Y,N |
LOAD_FILE(file_name) -- 讀取服務器文件內容,需 FILE 權限,小於 max_allowed_packet
LOWER(TRIM(col))SUBSTRING_INDEX(SUBSTRING_INDEX(url, '//', -1), '/', 1)CONCAT(LEFT(phone, 3), '****', RIGHT(phone, 4))QUOTE(col) 自動處理引號、逗號、換行