mysql字符串拼接函数:concat函数、concat_ws函数、concat_group函数之间的区别和举例

本文介绍了MySQL中常用的字符串连接函数,如CONCAT()、CONCAT_WS()和GROUP_CONCAT(),并展示了如何通过这些函数进行数据组合、分组及排序。通过GROUP_CONCAT()可以实现对分组数据的聚合,结合ORDER BY子句可进一步控制排序。这些函数在数据处理中非常实用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

测试数据

mysql> SELECT * FROM user;
+----+-----------+-----+---------------------+
| id | user_name | sex | create_at           |
+----+-----------+-----+---------------------+
|  1 | 张三      |   1 | 2021-08-17 07:54:43 |
|  2 | 李四      |   1 | 2021-08-17 07:54:43 |
|  3 | 王五      |   1 | 2021-08-17 07:55:03 |
|  4 | 小芳      |   0 | 2021-08-17 07:55:03 |
|  5 | 小香      |   0 | 2021-08-17 07:55:21 |
|  6 | 赵六      |   1 | 2021-08-17 07:55:21 |
+----+-----------+-----+---------------------+
6 rows in set (0.00 sec)

concat 将多个字符串连接成一个字符串

CONCAT()函数用于将多个字符串连接成一个字符串。

mysql> SELECT CONCAT(id,user_name) FROM user;
+----------------------+
| CONCAT(id,user_name) |
+----------------------+
| 1张三                |
| 2李四                |
| 3王五                |
| 4小芳                |
| 5小香                |
| 6赵六                |
+----------------------+
6 rows in set (0.00 sec)

concat_ws 带分隔符

使用函数CONCAT_WS()。使用语法为:CONCAT_WS(separator,str1,str2,…)
CONCAT_WS() 代表 CONCAT With Separator ,是CONCAT()的特殊形式,第一个参数是其它参数的分隔符。

mysql> SELECT CONCAT_WS(',', id,user_name) FROM user;
+------------------------------+
| CONCAT_WS(',', id,user_name) |
+------------------------------+
| 1,张三                       |
| 2,李四                       |
| 3,王五                       |
| 4,小芳                       |
| 5,小香                       |
| 6,赵六                       |
+------------------------------+
6 rows in set (0.00 sec)

group_concat 分组

GROUP_CONCAT函数返回一个字符串结果,该结果由分组中的值连接组合而成。

mysql> SELECT sex,GROUP_CONCAT(user_name) FROM user GROUP BY sex;
+-----+-----------------------------+
| sex | GROUP_CONCAT(user_name)     |
+-----+-----------------------------+
|   0 | 小芳,小香                   |
|   1 | 张三,李四,王五,赵六         |
+-----+-----------------------------+
2 rows in set (0.00 sec)

排序 ORDER BY

mysql> SELECT sex, GROUP_CONCAT(user_name ORDER BY id DESC) FROM user GROUP BY sex;
+-----+------------------------------------------+
| sex | GROUP_CONCAT(user_name ORDER BY id DESC) |
+-----+------------------------------------------+
|   0 | 小香,小芳                                |
|   1 | 赵六,王五,李四,张三                      |
+-----+------------------------------------------+
2 rows in set (0.00 sec)

分隔符SEPARATOR

mysql> SELECT sex,GROUP_CONCAT(user_name SEPARATOR ';') FROM user GROUP BY sex;
+-----+---------------------------------------+
| sex | GROUP_CONCAT(user_name SEPARATOR ';') |
+-----+---------------------------------------+
|   0 | 小芳;小香                             |
|   1 | 张三;李四;王五;赵六                   |
+-----+---------------------------------------+
2 rows in set (0.00 sec)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小龙在山东

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值