- concat()
concat(str1,str2,…)
将多个字符串连接成一个字符串。任何一个参数为NULL ,则返回值为 NULL。
mysql> select concat('aa','bb');
+-------------------+
| concat('aa','bb') |
+-------------------+
| aabb |
+-------------------+
1 row in set (0.00 sec)
mysql> select concat('aa',null);
+-------------------+
| concat('aa',null) |
+-------------------+
| NULL |
+-------------------+
1 row in set (0.00 sec)
- concat_ws()
concat_ws(separator,str1,str2,…)
第一个参数是分隔符。分隔符可以是一个字符串,也可以是其它参数。如果分隔符为 NULL,则结果为 NULL。concat_ws()不会忽略空字符串, 会忽略 NULL。
mysql> select concat_ws('#','a','b');
+------------------------+
| concat_ws('#','a','b') |
+------------------------+
| a#b |
+------------------------+
1 row in set (0.00 sec)
mysql> select concat_ws('#','a',null,'','b');
+--------------------------------+
| concat_ws('#','a',null,'','b') |
+--------------------------------+
| a##b |
+--------------------------------+
1 row in set (0.00 sec)
- group_concat()
group_concat( [distinct] field [order by field asc/desc ] [separator ‘分隔符’] )
distinct 排除重复值
order by 对结果中的值进行排序
separator 分隔符 默认为逗号(,)
使用中可以与group by或者in函数查询的值连接起来,返回一个字符串结果。
user 表如下
mysql> select * from user;
+----+------+----------+
| id | name | province |
+----+------+----------+
| 1 | A | 北京 |
| 2 | B | 北京 |
| 3 | C | 上海 |
| 4 | D | 浙江 |
| 5 | E | 广东 |
| 6 | F | 江苏 |
| 7 | H | 广东 |
| 8 | A | 上海 |
+----+------+----------+
8 rows in set (0.00 sec)
常规用法
mysql> SELECT GROUP_CONCAT(DISTINCT name SEPARATOR '-') FROM user;
+-------------------------------------------+
| GROUP_CONCAT(DISTINCT name SEPARATOR '-') |
+-------------------------------------------+
| A-B-C-D-E-F-H |
+-------------------------------------------+
1 row in set (0.00 sec)
与group by一起使用
mysql> SELECT province ,GROUP_CONCAT(name) FROM user group by province;
+----------+--------------------+
| province | GROUP_CONCAT(name) |
+----------+--------------------+
| 上海 | C,A |
| 北京 | A,B |
| 广东 | E,H |
| 江苏 | F |
| 浙江 | D |
+----------+--------------------+
5 rows in set (0.00 sec)
与in一起使用
mysql> SELECT GROUP_CONCAT(name) FROM user where province in ('北京','上海');
+--------------------+
| GROUP_CONCAT(name) |
+--------------------+
| A,B,C,A |
+--------------------+
1 row in set (0.00 sec)