在 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;
根据实际需求选择合适的拼接函数,字段拼接在生成完整信息(如地址、联系方式)或汇总数据时非常实用。