| 函數 | 語法 | NULL 處理 | 分隔符 | 典型用途 |
|---|---|---|---|---|
CONCAT | CONCAT(str1,str2,...) | 任一參數為 NULL → 結果 NULL | 無 (直接連接) | 簡單欄位合併 |
CONCAT_WS | CONCAT_WS(sep,str1,str2,...) | 忽略 NULL 參數,僅分隔符為 NULL 才回傳 NULL | 第一參數指定 | 欄位組合輸出 (如 CSV) |
GROUP_CONCAT | GROUP_CONCAT([DISTINCT] col [ORDER BY ...] [SEPARATOR str]) | 忽略 NULL 值 | 預設逗號,可自訂 | 群組聚合字串 (行轉列) |
SELECT CONCAT('A', NULL, 'C'); -- 結果: NULL
SELECT CONCAT('A', 'B', 'C'); -- 結果: 'ABC'
避坑:數值隱含轉二進位字串,建議 CAST(num AS CHAR)。
SELECT CONCAT_WS(',', 'A', NULL, 'C'); -- 結果: 'A,C'
SELECT CONCAT_WS('|', 'id', 'name', 'email'); -- 結果: 'id|name|email'
-- 基本用法
SELECT category, GROUP_CONCAT(product_name) FROM products GROUP BY category;
-- 進階:去重、排序、自訂分隔符
SELECT category,
GROUP_CONCAT(DISTINCT product_name ORDER BY product_name DESC SEPARATOR '; ')
FROM products
GROUP BY category;

GROUP_CONCAT 結果長度受 group_concat_max_len (預設 1024) 限制,大量資料需調大。LIMIT 或分頁處理。