开发者

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

开发者 https://www.devze.com 2022-12-23 09:19 出处:网络 作者: 何玉先先
目录mysql用逗号进行拼接、以逗号进行分割group_concat 函数MySQL多行数据用逗号拼接返回一行解决方案GROUP_CONCAT简单阐述总结MySQL用逗号进行拼接、以逗号进行分python割
目录
  • mysql用逗号进行拼接、以逗号进行分割
    • group_concat 函数
  • MySQL多行数据用逗号拼接返回一行
    • 解决方案
    • GROUP_CONCAT简单阐述
  • 总结

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

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

    group_concat 函数

    用法:group_concat (待拼接对象)

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

    例子:

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

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

    substring_index(str,delim,count)

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

    例子:

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

    其它参数不变,count为2,就会返回 开发者_mariadb“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,’,’,第几个值),’,&rsquandroido;,-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_use编程客栈r group by dept_id

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

    总结

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

    0

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    关注公众号