MySQL实现用逗号进行拼接、以逗号进行分割

 更新时间:2022年12月22日 16:45:06   作者:何玉先先  
这篇文章主要介绍了MySQL实现用逗号进行拼接、以逗号进行分割问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

MySQL用逗号进行拼接、以逗号进行分割

MySQL中,把查询的结果拼接成一个字符串。

group_concat 函数

用法:group_concat (待拼接对象)

输出:用逗号进行拼接后的字符串

例子:

select group_concat(emp_no) as employees from dept_emp;
 
/*
结果:
employees                                                         |
+-------------------------------------------------------------------+
| 10001,10002,10003,10004,10005,10006,10007,10008,10009,10010,10010 |
+-------------------------------------------------------------------+
*/

可以使用MySQL中的字符串拆分函数实现:

substring_index(str,delim,count)

说明:str: 被分割的字符串; delim: 分隔符; count: 分割符出现的次数

例子:

对于字符串 “209755,209756,209757” ,设置delim为 “,”,count为1,就会返回 “209755”;

其它参数不变,count为2,就会返回 “209755,209756”;其它参数不变,count为-1,就会返回 “209757”。

select colnum_name
,(select substring_index(substring_index(bill_ids,',',1),',',-1)) as bill_id1
,(select substring_index(substring_index(bill_ids,',',2),',',-1)) as bill_id2
,(select substring_index(substring_index(bill_ids,',',3),',',-1)) as bill_id3
from table_name;

若不知道要分割的字段究竟有几个值(如可能某些行就1个值,某些有6个),可以考虑根据具有最多值的数量来选择使用多少条

(select substring_index(substring_index(bill_ids,’,’,第几个值),’,’,-1))语句,但是会有问题(待解决)

例子:

原表
1
2,3,4
5,6
分割的结果
111
234
566

MySQL多行数据用逗号拼接返回一行

解决方案

先说解决办法,这里使用的是 GROUP_CONCAT 函数,先来实例:

SELECT GROUP_CONCAT( `name` SEPARATOR ',' ) FROM uim_user 

这样返回的多行数据会合并成一行,并且用逗号分割返回.

GROUP_CONCAT简单阐述

使用语法:

group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符'])

一般与group by 分组一起使用,如果不分组默认返回一行

而分组后会把相同分组类型的数据返回一行,并且可使用分割符号分割,去重,排序等操作

简单实例:

这里是按照部门分组,这样同一个部门的人会返回一行并且用逗号分割

SELECT group_concat( distinct(name) SEPARATOR ',' ) name FROM uim_user group by dept_id

ps:开发中会有很多种需要合并结果集的情况,比如要查询小明这个同学所有科目分数返回一行,这样使用来达到返回数据的要求。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:

相关文章

  • MYSQL(电话号码,身份证)数据脱敏的实现

    MYSQL(电话号码,身份证)数据脱敏的实现

    在日常开发需求中会经常遇到数据脱敏处理,比如身份证号、手机号,需要使用*进行部分替换显示。这样能使敏感隐私信息在一定程度上得到保护。本文就来介绍一下
    2021-05-05
  • mysql 5.6.23 winx64.zip安装详细教程

    mysql 5.6.23 winx64.zip安装详细教程

    这篇文章主要介绍了mysql 5.6.23 winx64.zip安装详细教程,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-02-02
  • 利用rpm安装mysql 5.6版本详解

    利用rpm安装mysql 5.6版本详解

    众所周知MySQL在很多领域都被广泛的使用,尤其是很多互联网企业,诸如腾讯,阿里等等。那么本文将主要介绍如何通过rpm方式来安装Mysql,这是比较简单的一种安装方式,文中介绍的很详细,相信对于大家安装mysql具有一定的参考借鉴价值,下面来一起看看吧。
    2016-11-11
  • MySQL 索引优化案例

    MySQL 索引优化案例

    这篇文章主要介绍了MySQL 索引优化案例,文章围绕主题展开详细的内容介绍,具有一定的参考价值,感兴趣的小伙伴可以参考一下,希望对你的学习有所帮助
    2022-08-08
  • Mysql如何优化查询速度

    Mysql如何优化查询速度

    这篇文章主要介绍了Mysql如何优化查询速度问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • mysql子查询(单行子查询,多行子查询,多列子查询)

    mysql子查询(单行子查询,多行子查询,多列子查询)

    本文主要介绍了mysql子查询(单行子查询,多行子查询,多列子查询),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • MySQL高并发生成唯一订单号的方法实现

    MySQL高并发生成唯一订单号的方法实现

    这篇文章主要介绍了MySQL高并发生成唯一订单号的方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02
  • 详解MySQL Workbench使用教程

    详解MySQL Workbench使用教程

    这篇文章主要介绍了详解MySQL Workbench使用教程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02
  • 实例解析MySQL中的存储过程及存储过程的调用方法

    实例解析MySQL中的存储过程及存储过程的调用方法

    存储例程是存储在数据库服务器中的一组sql语句,通过在查询中调用一个指定的名称来执行这些sql语句命令,下面就以实例解析MySQL中的存储过程及存储过程的调用方法:
    2016-05-05
  • SQL汇总统计与GROUP BY过滤查询实现

    SQL汇总统计与GROUP BY过滤查询实现

    这篇文章主要介绍了SQL汇总统计与GROUP BY过滤查询实现,GROUP BY 实质是先排序后分组,遵照索引建的最佳左前缀。当无法使用索引时,增大max_length_for_sort_data和sort_buffer参数的值
    2023-01-01

最新评论