CONCAT(str1, str2, ...)
- 任一參數為 NULL → 整體回傳 NULL。
- 數值自動轉字串:
CONCAT(10, 'abc') → '10abc'。
- 二進制字串參數 → 結果為二進制字串。
SELECT CONCAT('11','22','33'); -- '112233'
SELECT CONCAT('11', NULL); -- NULL
CONCAT_WS(sep, str1, str2, ...)
- With Separator:第一參數為分隔符。
- 分隔符為 NULL → 回傳 NULL。
- 自動忽略 NULL 參數 (不忽略空字串)。
SELECT CONCAT_WS(',', '11','22','33'); -- '11,22,33'
SELECT CONCAT_WS(',', '11', NULL, '33'); -- '11,33' (NULL 被跳過)
實戰場景
- 拼接顯示名:
CONCAT_WS(' ', last_name, first_name)。
- 構建 CSV 行:
CONCAT_WS(',', col1, col2, col3)。
- 動態 SQL:
CONCAT('UPDATE t SET ', col, '=val WHERE id=', id)。
避坑指南
- 需保留 NULL 語意時用
COALESCE(col, '') 包裹再 CONCAT。
- 大量拼接 (萬行) 考慮
GROUP_CONCAT 或應用層處理,避免 SQL 過長。