在 MySQL 中,字段拼接可以通過多種函數實現,用于將多個字段或字符串組合成一個新的字符串。以下是常用的字段拼接方法:
最常用的拼接函數,可拼接多個字段或字符串,任何一個參數為NULL時,結果將為NULL。
SELECT CONCAT(字段1, 字段2, '固定字符串') AS 拼接結果 FROM 表名;
SELECT CONCAT(name, '<', email, '>') AS user_info FROM users;
SELECT CONCAT(id, '-', username, '-', status) AS user_code FROM users;
WS代表 "With Separator",可以指定分隔符,自動在參數間添加分隔符,忽略NULL值。
SELECT CONCAT_WS(分隔符, 字段1, 字段2) AS 拼接結果 FROM 表名;
SELECT CONCAT_WS(',', name, age, city) AS user_profile FROM users;
SELECT CONCAT_WS(',', name, age, city) AS user_profile FROM users;
用于將分組后的多行數據拼接成一個字符串,常與GROUP BY配合使用。
SELECT 分組字段, GROUP_CONCAT(拼接字段 [SEPARATOR '分隔符']) AS 拼接結果
FROM 表名
GROUP BY 分組字段;
SELECT class, GROUP_CONCAT(name SEPARATOR ',') AS students
FROM students
GROUP BY class;
SELECT class, GROUP_CONCAT(DISTINCT name ORDER BY name DESC SEPARATOR ';') AS students
FROM students
GROUP BY class;
使用IFNULL()或COALESCE()函數將NULL轉換為指定字符串:
SELECT CONCAT(IFNULL(name, ''), '-', IFNULL(phone, '未填寫')) AS contact FROM users;
SELECT CONCAT('Tel:', phone, ';') AS contact_phone FROM users;
-
CONCAT()和CONCAT_WS()用于單行內的字段拼接
-
GROUP_CONCAT()用于多行數據的分組拼接
-
GROUP_CONCAT()有長度限制(默認約 1024 字節),可通過group_concat_max_len變量調整:
SET GLOBAL group_concat_max_len = 102400;
根據實際需求選擇合適的拼接函數,字段拼接在生成完整信息(如地址、聯系方式)或匯總數據時非常實用。