mysql函数concat与group_concat使用说明

2023-05-16

1.concat()函数

使用方法:concat(str1,str2,…)
返回的结果为连接参数产生的字符串,如有任何一个参数为null,则返回值为null

注意:
如果所有参数均为非二进制字符串,则结果为非二进制字符串
如果自变量中含有任一二进制字符串,则结果为二进制字符串
一个数字参数被转为与之相等的二进制字符串格式,如要避免这种情况,可使用显式类型cast

例如:

select concat(cast(int_col as char), char_col);

使用例子:
1.字段两端加上’,’

mysql> select concat(',',name,',') from `user`;
+--------------------------+
| concat(',',fdipzone,',') |
+--------------------------+
| ,fdipzone,               |
+--------------------------+
1 row in set (0.00 sec)



2.其中有一个参数为null

mysql> select concat(null,name) from `user`;
+-------------------+
| concat(null,name) |
+-------------------+
| NULL              |
+-------------------+
1 row in set (0.00 sec)


2.concat_ws() 函数

使用方法:concat_ws(separator,str1,str2,…)

concat_ws()函数是concat()函数的特殊形式,第一个参数是其他参数的分隔符。分隔符的位置在要连接的两个字符串之间。分隔符可以是一个字符串,也可以是其他参数。
如果分隔符为null,则结果为null。
函数会忽略任何分隔符参数后的null值,但concat_ws()不会忽略任何空字符串。

使用例子:
1.使用’,’分隔多个字段

mysql> select concat_ws(',',country_code,phone,region) from `user`;
+------------------------------------------+
| concat_ws(',',country_code,phone,region) |
+------------------------------------------+
| 86,13794830550,GZ                        |
+------------------------------------------+
1 row in set (0.00 sec)



2.分隔符为null

mysql> select concat_ws(null,country_code,phone,region) from `user`;
+-------------------------------------------+
| concat_ws(null,country_code,phone,region) |
+-------------------------------------------+
| NULL                                      |
+-------------------------------------------+
1 row in set (0.00 sec)



3.参数中有null与空字符串

mysql> select concat_ws(',',country_code,phone,null,region,'',grade) from `user`;
+--------------------------------------------------------+
| concat_ws(',',country_code,phone,null,region,'',grade) |
+--------------------------------------------------------+
| 86,13794830550,GZ,,200                                 |
+--------------------------------------------------------+
1 row in set (0.00 sec)


3.group_concat()函数

使用方法:GROUP_CONCAT([DISTINCT] expr [,expr …]
[ORDER BY {unsigned_integer | col_name | formula} [ASC | DESC] [,col …]]
[SEPARATOR str_val])

group_concat可以得到表达式结合体的连结值,使用distinct可以排除重复值。使用order by子句可以排序。
separator是一个字符串,用于分隔结果集中每个元素。默认是逗号,可以通过指定separator “”完全移除这个分隔符。

使用例子:

表结构

CREATE TABLE `article_in_category` (
 `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
 `article_id` int(11) unsigned NOT NULL,
 `category_id` int(11) unsigned NOT NULL,
 PRIMARY KEY (`id`),
 KEY `article_id_INDEX` (`article_id`),
 KEY `category_id_INDEX` (`category_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

插入数据:

INSERT INTO `article_in_category` (`id`, `article_id`, `category_id`) VALUES (NULL, '1', '1'),
(NULL, '1', '2'),(NULL, '1', '3'),(NULL, '2', '4'),(NULL, '2', '3'),(NULL, '2', '5'),(NULL, '3', '1'),
(NULL, '3', '5'),(NULL, '3', '6'),(NULL, '4', '8');
mysql> select * from `article_in_category`;
+----+------------+-------------+
| id | article_id | category_id |
+----+------------+-------------+
|  1 |          1 |           1 |
|  2 |          1 |           2 |
|  3 |          1 |           3 |
|  4 |          2 |           4 |
|  5 |          2 |           3 |
|  6 |          2 |           5 |
|  7 |          3 |           1 |
|  8 |          3 |           5 |
|  9 |          3 |           6 |
| 10 |          4 |           8 |
+----+------------+-------------+

获取文章的id及所有分类id

mysql> select article_id,group_concat(category_id order by category_id asc) from `article_in_category` group by article_id;
+------------+----------------------------------------------------+
| article_id | group_concat(category_id order by category_id asc) |
+------------+----------------------------------------------------+
|          1 | 1,2,3                                              |
|          2 | 3,4,5                                              |
|          3 | 1,5,6                                              |
|          4 | 8                                                  |
+------------+----------------------------------------------------+
4 rows in set (0.00 sec)

注意:group_concat()函数对返回的结果有长度限制,默认为1024字节

查看group_concat返回值最大长度

mysql> show global variables like '%group_concat_max_len%';
+----------------------+-------+
| Variable_name        | Value |
+----------------------+-------+
| group_concat_max_len | 1024  |
+----------------------+-------+

修改group_concat返回值最大长度

mysql> set global group_concat_max_len=2048;
Query OK, 0 rows affected (0.03 sec)

mysql> show global variables like '%group_concat_max_len%';
+----------------------+-------+
| Variable_name        | Value |
+----------------------+-------+
| group_concat_max_len | 2048  |
+----------------------+-------+
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mysql函数concat与group_concat使用说明 的相关文章

随机推荐

  • 代码简短且隐蔽的后门木马

    本文将介绍一个代码很简短 xff0c 而且很隐蔽的后门木马 xff0c 以便让大家在检测程序时可以避免被挂木马 文件内容如下 xff1a lt php 64 span class hljs variable span 61 span cla
  • H264视频编码原理基础分析

    引言 本文章旨在记录本人学习有关音视频时对H264码流视频编解码原理部分的内容 xff0c 如有不对请留言指出 1 音视频封装格式 我们一般下载或者播放的视频文件常见都是以 xxx mp4 xxx flv xxx mkv等标识结尾 xff0
  • mysql导出查询结果到csv方法

    要将mysql的查询结果导出为csv xff0c 一般会使用php连接mysql执行查询 xff0c 将返回的查询结果使用php生成csv格式再导出 但这样比较麻烦 xff0c 需要服务器安装php才可以实现 直接使用mysql导出csv方
  • MySQL实用工具汇总

    本文收录了mysql相关的实用工具 工具包括 xff1a 性能测试 xff0c 状态分析 xff0c SQL路由 xff0c 及运维开发相关的所有工具 xff0c 并会持续更新 1 工具套件集 percona toolkit oak too
  • php 判断memcache key/value是否存在方法

    1 memcache简介 memcache是一套分布式高速缓存软件 xff0c 用于数据缓存及分布式网站session存储等 使用key 61 gt value方式存储 xff0c 支持数据压缩存储处理及数据过期处理 value只支持str
  • mysql 使用inet_aton和inet_ntoa处理ip地址数据

    本文将介绍如何在数据库中使用合适格式保存ip地址数据 xff0c 并能方便的对ip地址进行比较的方法 1 保存ip地址到数据库 数据库中保存ip地址 xff0c 字段一般会定义为 xff1a span class hljs escape 9
  • git commit 提交注释规范

    本文将介绍使用git commit时的注释规范 xff0c 提高commit内容的可读性及理解 规范说明 xff1a 1 用一空行分隔标题与正文 2 标题使用大写字母 3 标题不超过50个字符 4 标题使用祈使语气 5 标题不要使用句号结尾
  • html5实现摇一摇功能

    原理 xff1a 使用DeviceMotion实现 xff0c 关于DeviceMotion介绍可以查看 https developer mozilla org en US docs Web Reference Events devicem
  • MySql查看与修改auto_increment方法

    本文将介绍如何查看表的auto increment及其修改方法 查看表当前auto increment 表的基本数据是存放在mysql的information schema库的tables表中 xff0c 我们可以使用sql查出 span
  • js遍历获取表格内数据方法

    本文将介绍如何使用js获取表格内某一单元格的内容 xff0c 表格由table tr td等html标记组成 table表示表格 xff0c tr表示行 xff0c td表示行中列 1 一般的表格结构如下 span class hljs t
  • JS生成二维码(兼容各种浏览器及中文)

    本文将介绍如何使用JS生成二维码 xff0c 兼容各种浏览器及手机端 xff0c 支持中文 代码如下 xff1a span class hljs doctype lt DOCTYPE html gt span span class hljs
  • mysql 严格模式 Strict Mode说明

    1 开启与关闭Strict Mode方法 找到mysql安装目录下的my cnf xff08 windows系统则是my ini 文件 在sql mode中加入STRICT TRANS TABLES则表示开启严格模式 xff0c 如没有加入
  • C++产生随机数

    随机数 计算机的随机数都是由伪随机数 xff0c 即是由小M多项式序列生成的 xff0c 其中产生每个小序列都有一个初始值 xff0c 即随机种子 xff08 注意 xff1a 小M多项式序列的周期是65535 xff0c 即每次利用一个随
  • git 误删分支恢复方法

    在使用git的过程中 xff0c 因为人为因素造成分支 xff08 commit 被删除 xff0c 可以使用以下步骤进行恢复 首先用以下步骤创建一个新分支 xff0c 修改一些文件后删除 xff0c 以便进行恢复 1 创建分支 abc g
  • 软件工程师的鄙视链

    最近这几年在世界各地突然吹起了一股全民写程序的风潮 xff0c 但是身为一介靠写程序 xff08 以及在上班时间胡乱上网 xff09 来谋生的 developer xff08 所谓的 developer 就是 软件工程师 的比较潮的说法 x
  • mac使用brew安装软件失败的通用解决方法

    使用mac的brew安装软件 xff0c 有时会出现安装失败 xff0c 或显示安装成功 xff0c 但不能正常使用的情况 例如安装php56 redis扩展 xff0c 显示安装成功 xff0c 重启后查看phpinfo看不到redis扩
  • node.JS md5加密中文与php结果不一致的解决方法

    因项目需要 xff0c 需要node JS与php做接口调用 xff0c 发现node JS对中文使用md5加密与php对中文md5加密的结果不同 PHP span class php span class hljs preprocesso
  • mysql互换表中两列数据方法

    1 创建表及记录用于测试 span class hljs operator span class hljs keyword CREATE span span class hljs keyword TABLE span span class
  • mysql 时间戳格式化函数from_unixtime使用说明

    我们一般使用字段类型int 11 时间戳来保存时间 xff0c 这样方便查询时提高效率 但这样有个缺点 xff0c 显示的时间戳 xff0c 很难知道真实日期时间 mysql提供了一个时间戳格式化函数from unixtime来转换格式 f
  • mysql函数concat与group_concat使用说明

    1 concat 函数 使用方法 xff1a concat str1 str2 返回的结果为连接参数产生的字符串 xff0c 如有任何一个参数为null xff0c 则返回值为null 注意 xff1a 如果所有参数均为非二进制字符串 xf