MySQL中函数CONCAT 、CONCAT_WS、GROUP_CONCATCONCAT_WSCONCATGROUP_CONCAT

CONCAT_WS

使用函数CONCAT_WS()。

使用语法为:

CONCAT_WS(separator,str1,str2,…)

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

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

mysql> select concat_ws(',','x','y','z');
+----------------------------+
| concat_ws(',','x','y','z') |
+----------------------------+
| x,y,z                      |
+----------------------------+
1 row in set (0.00 sec)

CONCAT

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

mysql> select concat(',','x','y','z');
+-------------------------+
| concat(',','x','y','z') |
+-------------------------+
| ,xyz                    |
+-------------------------+
1 row in set (0.00 sec)

GROUP_CONCAT

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

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

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子句的写法:

 (select t.id from (select id from article limit 10) t  )

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

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的子查询语法用起来不是那么“理所当然”的地方。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏杨建荣的学习笔记

MySQL数据类型(r3笔记第87天)

今天在本地装了一个MySQL的学习环境,简单的熟悉了一下。准备开始好好学习MySQL了。 学习编程语言我都是从数据类型入手。每种编程语言的数据类型都有自己的特点...

29610
来自专栏峰会SaaS大佬云集

Oracle 数据库入门之----------------------单行函数

SQL> select lower('Hello World') 转小写,upper('Hello World') 转大写,initcap('hello wor...

780
来自专栏技术博文

MySQL 数据类型

数值类型 MySQL支持所有标准SQL数值数据类型。 这些类型包括严格数值数据类型(INTEGER、SMALLINT、DECIMAL和NUMERIC),以及近似...

2864
来自专栏吾爱乐享

软件测试之学习mysql的查询功能select及高级查询(重中之重)

1272
来自专栏LanceToBigData

MySQL(四)之MySQL数据类型

一、数据类型概述  MySQL的数据类型有大概可以分为5种,分别是 整数类型、浮点数类型和定点数类型、日期和时间类型、字符串类型、二进制类型。现在可以来看看你对...

24010
来自专栏数据和云

深入剖析:认识Oracle 中的 NULL 值

杨廷琨,网名 yangtingkun 云和恩墨技术总监,Oracle ACE Director,ACOUG 核心专家 经常看到很多人提出和NULL有关的问题。N...

3075
来自专栏阿杜的世界

MySQL文档阅读(一)-数字类型

MySQL支持很多系列的SQL数据类型:数字类型(numeric types)、日期和时间类型(date and time types)、字符串类型(字符和字节...

511
来自专栏西安-晁州

mybatis学习之高级映射

一对一映射查询 1、数据库执行脚本: /* SQLyog Ultimate v12.09 (64 bit) MySQL - 5.7.11-log : Datab...

2800
来自专栏乐沙弥的世界

PL/SQL 联合数组与嵌套表

      通常情况下,在PL/SQL中,处理单行单列的数据可以使用标量变量,而处理单行多列的数据则使用PL/SQL记录是不错的选择。单列多行数据 则由联合数组...

1163
来自专栏菜鸟致敬

MySQL 数据类型

MySQL中定义数据字段的类型对你数据库的优化是非常重要的。 MySQL支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。 ---- 数值类...

3187

扫码关注云+社区

领取腾讯云代金券