| 分類 | 函數 |
|---|---|
| 編碼/轉換 | ASCII, ORD, CONV, BIN, OCT, HEX, CHAR |
| 連接/拼接 | CONCAT, CONCAT_WS |
| 長度計算 | LENGTH/OCTET_LENGTH, CHAR_LENGTH/CHARACTER_LENGTH |
| 查找/定位 | LOCATE, POSITION, INSTR |
| 填充/截取 | LPAD, RPAD, LEFT, RIGHT, SUBSTRING, MID, SUBSTRING_INDEX |
| 去除空格 | TRIM, LTRIM, RTRIM |
| 重複/反轉 | SPACE, REPEAT, REVERSE |
| 替換/插入 | REPLACE, INSERT |
| 集合/查找 | ELT, FIELD, FIND_IN_SET, MAKE_SET, EXPORT_SET |
| 大小寫轉換 | LOWER/LCASE, UPPER/UCASE |
| 文件讀取 | LOAD_FILE |
SELECT ASCII('A'); -- 65
SELECT ORD('中'); -- 中文字符編碼值
SELECT CONV('FF', 16, 10); -- 255 (十六進制轉十進制)
SELECT BIN(10); -- '1010' (二進制)
SELECT OCT(10); -- '12' (八進制)
SELECT HEX(255); -- 'FF' (十六進制)
SELECT CHAR(77,121,83,81,76); -- 'MySQL'
SELECT CONCAT('My', 'S', 'QL'); -- 'MySQL'
SELECT CONCAT('My', NULL, 'QL'); -- NULL (任一參數為NULL結果為NULL)
SELECT CONCAT_WS(';', 'id', 'name', 'age'); -- 'id;name;age' (帶分隔符)
SELECT LENGTH('中文'); -- 6 (UTF-8下每字3字節)
SELECT CHAR_LENGTH('中文'); -- 2 (字符數)
SELECT LOCATE('sql', 'MySQL'); -- 3
SELECT LOCATE('sql', 'MySQL', 4); -- 0 (從第4位開始找不到)
SELECT INSTR('MySQL', 'sql'); -- 3 (同 LOCATE 參數順序相反)
SELECT LEFT('MySQL', 2); -- 'My'
SELECT RIGHT('MySQL', 3); -- 'SQL'
SELECT SUBSTRING('MySQL', 3, 2); -- 'SQ' (從第3位取2字符)
SELECT LPAD('5', 3, '0'); -- '005' (左填充)
SELECT RPAD('5', 3, '0'); -- '500' (右填充)
SELECT SUBSTRING_INDEX('www.mysql.com', '.', 2); -- 'www.mysql' (從左數第2個分隔符前)
SELECT SUBSTRING_INDEX('www.mysql.com', '.', -2); -- 'mysql.com' (從右數第2個分隔符後)
SELECT TRIM(' bar '); -- 'bar'
SELECT TRIM(LEADING 'x' FROM 'xxxbarxxx'); -- 'barxxx'
SELECT TRIM(BOTH 'x' FROM 'xxxbarxxx'); -- 'bar'
SELECT TRIM(TRAILING 'xyz' FROM 'barxxyz'); -- 'barx'
SELECT REPLACE('www.mysql.com', 'w', 'Ww'); -- 'WwWwWw.mysql.com'
SELECT INSERT('Quadratic', 3, 4, 'What'); -- 'QuWhattic' (第3位起4字符替換為'What')
SELECT ELT(2, 'a', 'b', 'c'); -- 'b' (返回第N個參數)
SELECT FIELD('b', 'a', 'b', 'c'); -- 2 (返回值在列表中的位置)
SELECT FIND_IN_SET('b', 'a,b,c'); -- 2 (在逗號分隔字符串中查找)
SELECT MAKE_SET(5, 'a', 'b', 'c'); -- 'a,c' (二進制101對應第0,2位)
SELECT EXPORT_SET(5, 'Y', 'N', ',', 3); -- 'Y,N,Y' (位掩碼導出集合)
SELECT LOWER('MySQL'); -- 'mysql'
SELECT UPPER('mysql'); -- 'MYSQL'
SELECT LOAD_FILE('/etc/passwd'); -- 需FILE權限,文件需在服務器上且小於max_allowed_packet
LPAD(id, 8, '0') → '00000123'SUBSTRING_INDEX(SUBSTRING_INDEX(url, '//', -1), '/', 1)REPLACE(TRIM(BOTH ',' FROM tags), ',,', ',')CONCAT(LEFT(phone, 3), '****', RIGHT(phone, 4))LENGTH 計算字節長度,CHAR_LENGTH 計算字符長度,WHERE 條件中優先用後者利用字符級索引。CONCAT 參數含 NULL 導致整體為 NULL,拼接可能為空的列請用 COALESCE(col, '') 或 CONCAT_WS。SUBSTRING_INDEX 解析分隔符字符串比 SUBSTRING + LOCATE 組合更簡潔高效。掌握這 27 個字符串函數,覆蓋 95% 以上的文本處理場景。