MySQL 里严格来说与"字符串拼接(concat)"相关的常用函数主要有 3 个:
一. CONCAT()
- 将多个字符串直接连接起来。
- 只要有任意参数为 NULL,结果就是 NULL。
sql
SELECT CONCAT('Hello', ' ', 'World');
-- Hello World
SELECT CONCAT('A', NULL, 'B');
-- NULL
二. CONCAT_WS()(WS = With Separator)
- 第一个参数是分隔符。
- 自动忽略后面参数中的 NULL 值。 分隔符不会出现在被忽略的位置。
- 当所有值都为 NULL 时(不包括第一个参数分隔符),结果为空字符串。
- 当第一个参数(分隔符)为 NULL 时,结果为 NULL 。
sql
SELECT CONCAT_WS('-', '2025', '06', '12');
-- 2025-06-12
SELECT CONCAT_WS('-', '2025', NULL, '12');
-- 2025-12
三. GROUP_CONCAT()
- 聚合函数,将多行数据拼接成一个字符串。 常用于分组统计结果展示。
- 自动忽略后面参数中的 NULL 值。 分隔符不会出现在被忽略的位置。
- 当所有值都为 NULL 时,结果为 NULL 。
- 可以指定分隔符,默认分隔符为 ",",分隔符不能为 NULL 。
例如表:
| dept | name |
|---|---|
| IT | Tom |
| IT | Jack |
| IT | Lucy |
sql
SELECT GROUP_CONCAT(name)
FROM employee
WHERE dept = 'IT';
结果:
sql
Tom,Jack,Lucy
也可以指定分隔符:
sql
SELECT GROUP_CONCAT(name SEPARATOR '|')
FROM employee;
结果:
sql
Tom|Jack|Lucy