千家信息网

对照Oracle,MySQL的几个使用字符串函数

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,[PHP]1、concat()函数1.1 MySQL的concat函数可以连接一个或者多个字符串,如mysql> select concat('10');+--------------+| conca
千家信息网最后更新 2026年10月31日对照Oracle,MySQL的几个使用字符串函数

[PHP]

1、concat()函数
1.1 MySQL的concat函数可以连接一个或者多个字符串,如
mysql> 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)

而Oracle的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)

..

[/PHP]

[@more@]
函数 字符 字符串 字段 一行 逗号 分组 时候 分隔符 不同 两个 份数 例子 倒序 冗余 分号 多个 语法 排序 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 保险科技 互联网保险 哈尔滨大商圈互联网科技有限公司 互联网佳科技有限公司 互联网和科技技术 科技互联网政务服务 世界互联网领先科技成果 齐家互联网科技有限公司 互联网科技大会案例 深圳前海聚择互联网科技有限公司 中国互联网有什么科技含量 以后互联网后是啥科技 互联网科技公司实习生 广西互联网科技孵化中心 明优互联网科技有限公司 卓翼科技产业互联网合作 无锡工业互联网科技有限公司 浙南科技城互联网大厦招聘 江苏互联网智能科技产品出厂价 银川新华互联网科技学校原画 第三届互联网大会安防黑科技 互联网品科技 互联网科技作文 齐家互联网科技有限公司 崇明区互联网教育科技售后服务 互联网新科技动漫ppt素材 浙南科技城互联网大厦建设工程 中天科技中国工业互联网 从那以后互联网科技有限公司 互联网金融运营模式中的金融科技 广州三三互联网科技有限公司
0