千家信息网

concat和concat_ws()的区别是什么

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章将为大家详细讲解有关concat和concat_ws()的区别是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1、concat()函数1.
千家信息网最后更新 2026年11月01日concat和concat_ws()的区别是什么

这篇文章将为大家详细讲解有关concat和concat_ws()的区别是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

1、concat()函数
1.1 MySQL的concat函数可以连接一个或者多个字符串,如
> select concat('10');
+--------------+
| concat('10') |
+--------------+
| 10 |
+--------------+
1 row in set (0.00 sec)

mysql> select concat('11','22','33');
+------------------------+
| concat('11','22','33') |
+------------------------+
| 112233 |
+------------------------+

1 row in set (0.00 sec)

而的concat函数只能连接两个字符串

SQL> select concat('11','22') from dual;

1.2 MySQL的concat函数在连接字符串的时候,只要其中一个是NULL,那么将返回NULL

mysql> select concat('11','22',null);
+------------------------+
| concat('11','22',null) |
+------------------------+
| NULL |
+------------------------+
1 row in set (0.00 sec)

而Oracle的concat函数连接的时候,只要有一个字符串不是NULL,就不会返回NULL

SQL> select concat('11',NULL) from dual;
CONCAT
--
11

2、concat_ws()函数, 表示concat with separator,即有分隔符的字符串连接
如连接后以逗号分隔
mysql> select concat_ws(',','11','22','33');

+-------------------------------+
| concat_ws(',','11','22','33') |
+-------------------------------+
| 11,22,33 |
+-------------------------------+
1 row in set (0.00 sec)

和concat不同的是, concat_ws函数在执行的时候,不会因为NULL值而返回NULL
mysql> select concat_ws(',','11','22',NULL);
+-------------------------------+
| concat_ws(',','11','22',NULL) |
+-------------------------------+
| 11,22 |
+-------------------------------+
1 row in set (0.00 sec)

3、group_concat()可用来行转列, Oracle没有这样的函数

完整的语法如下
group_concat([DISTINCT] 要连接的字段[Order BY ASC/DESC 排序字段] [Separator '分隔符'])
如下例子
mysql> select * from aa;

+------+------+
| id | name |
+------+------+
| 1 | 10 |
| 1 | 20 |
| 1 | 20 |
| 2 | 20 |
| 3 | 200 |
| 3 | 500 |
+------+------+
6 rows in set (0.00 sec)
3.1 以id分组,把name字段的值打印在一行,逗号分隔(默认)
mysql> select id,group_concat(name) from aa group by id;
+------+--------------------+
| id | group_concat(name) |
+------+--------------------+
| 1 | 10,20,20 |
| 2 | 20 |
| 3 | 200,500 |
+------+--------------------+

3 rows in set (0.00 sec)

3.2 以id分组,把name字段的值打印在一行,分号分隔
mysql> select id,group_concat(name separator ';') from aa group by id;
+------+----------------------------------+
| id | group_concat(name separator ';') |
+------+----------------------------------+
| 1 | 10;20;20 |
| 2 | 20 |
| 3 | 200;500 |
+------+----------------------------------+

3 rows in set (0.00 sec)

3.3 以id分组,把去冗余的name字段的值打印在一行,逗号分隔

mysql> select id,group_concat(distinct name) from aa group by id;

+------+-----------------------------+
| id | group_concat(distinct name) |
+------+-----------------------------+
| 1 | 10,20 |
| 2 | 20 |
| 3 | 200,500 |
+------+-----------------------------+

3 rows in set (0.00 sec)

3.4 以id分组,把name字段的值打印在一行,逗号分隔,以name排倒序

mysql> select id,group_concat(name order by name desc) from aa group by id;

+------+---------------------------------------+
| id | group_concat(name order by name desc) |
+------+---------------------------------------+
| 1 | 20,20,10 |
| 2 | 20 |
| 3 | 500,200 |
+------+---------------------------------------+

3 rows in set (0.00 sec)

4、repeat()函数,用来复制字符串,如下'ab'表示要复制的字符串,2表示复制的份数

mysql> select repeat('ab',2);

+----------------+
| repeat('ab',2) |
+----------------+
| abab |
+----------------+

1 row in set (0.00 sec)

又如
mysql> select repeat('a',2);

+---------------+
| repeat('a',2) |
+---------------+
| aa |
+---------------+
1 row in set (0.00 sec)

关于concat和concat_ws()的区别是什么就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

函数 字符 字符串 字段 一行 逗号 分组 时候 内容 分隔符 文章 更多 知识 篇文章 不同 不错 两个 份数 例子 倒序 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 华服互联网科技怎么样 科技赋能下的互联网金融 互联网科技巨头监管 凡科互联网科技 鑫亿盛互联网科技 互联网科技ppt模板 广州善班互联网科技 互联网科技视频素材 上海卓越科技 互联网 互联网 科技馆 互联网科技产品 须眉科技是互联网公司吗 成都互联网科技公司100强 中国航天科技大学国际工业互联网 广州市恰铎互联网科技有限公司 中国科技创新与世界互联网大会 沐思想互联网科技有限公司 有人说阿里系是互联网科技企业 张家口科技产业互联网平台 数字科技和互联网金融哪个好 深圳互联网络科技有限公司 电子科技大学互联网 新浪科技互联网 亿人帮互联网科技 北京华百购互联网科技有限公司 贵州叶脉互联网科技有限公司所属行业 互联网科技人工智能实验室 科技互联网的核心竞争力 银行科技岗属于互联网吗 科技互联网公司两年变化
0