前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL中函数CONCAT 、CONCAT_WS、GROUP_CONCATCONCAT_WSCONCATGROUP_CONCAT

MySQL中函数CONCAT 、CONCAT_WS、GROUP_CONCATCONCAT_WSCONCATGROUP_CONCAT

作者头像
一个会写诗的程序员
发布2018-08-17 14:33:09
1.1K0
发布2018-08-17 14:33:09
举报

CONCAT_WS

使用函数CONCAT_WS()。

使用语法为:

代码语言:javascript
复制
CONCAT_WS(separator,str1,str2,…)

CONCAT_WS() 代表 CONCAT With Separator ,是CONCAT()的特殊形式。

第一个参数是其它参数的分隔符。分隔符的位置放在要连接的两个字符串之间。 分隔符可以是一个字符串,也可以是其它参数。 如果分隔符为 NULL,则结果为 NULL。函数会忽略任何分隔符参数后的 NULL 值。但是CONCAT_WS()不会忽略任何空字符串。 (然而会忽略所有的 NULL)。

代码语言:javascript
复制
mysql> select concat_ws(',','x','y','z');
+----------------------------+
| concat_ws(',','x','y','z') |
+----------------------------+
| x,y,z                      |
+----------------------------+
1 row in set (0.00 sec)

CONCAT

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

代码语言:javascript
复制
mysql> select concat(',','x','y','z');
+-------------------------+
| concat(',','x','y','z') |
+-------------------------+
| ,xyz                    |
+-------------------------+
1 row in set (0.00 sec)

GROUP_CONCAT

如果我们想把下面的查询列表拼接成逗号(,) 分隔的字符串,怎么搞呢?

代码语言:javascript
复制
mysql> select a.id from article a limit 10;
+----+
| id |
+----+
|  1 |
|  2 |
|  3 |
|  4 |
|  5 |
|  6 |
|  7 |
|  8 |
|  9 |
| 10 |
+----+
10 rows in set (0.00 sec)

答案:使用GROUP_CONCAT

代码语言:javascript
复制
mysql> select group_concat(a.id) from article a where a.id in
 (select t.id from (select id from article limit 10) t  );
+----------------------+
| group_concat(a.id)   |
+----------------------+
| 1,2,3,4,5,6,7,8,9,10 |
+----------------------+
1 row in set (0.00 sec)

特别指出的是这里in后面的select子句的写法:

代码语言:javascript
复制
 (select t.id from (select id from article limit 10) t  )

这里要注意的是,我们不能直接这么写

代码语言:javascript
复制
mysql> select group_concat(a.id) from article a where a.id in (select a.id from article a limit 10);
ERROR 1235 (42000): This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'

这也是mysql的子查询语法用起来不是那么“理所当然”的地方。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017.09.27 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • CONCAT_WS
  • CONCAT
  • GROUP_CONCAT
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档