sql查询结果列拼接成逗号分隔的字符串方法

 更新时间:2021年05月25日 14:29:40   作者:jucheng  
SQL查询时会经常需要,把查询的结果拼接成一个字符串。那么怎么直接把sql查询结果列拼接成逗号分隔的字符串方法,下面就一起来了解一下

背景:做SQL查询时会经常需要,把查询的结果拼接成一个字符串。

解决方法: 通过group_concat函数

拼接的结果很长,导致拼接结果显示不全,可以通过以下方法解决。

在每次查询前执行SET SESSION group_concat_max_len = 10240;

或者SET GLOBALgroup_concat_max_len = 10240;

使得查询结果值变大。

补充:SQL server 的 拼接SQL如下:

selectstuff(( select ','+ requestid from nccombinedpayment for xml path('')),1,1,'') as requestid ;

补充函数方法:

使用的例子均在下面的数据库表tt2下执行:

一、concat()函数

1、功能:将多个字符串连接成一个字符串。

2、语法:concat(str1, str2,...)

返回结果为连接参数产生的字符串,如果有任何一个参数为null,则返回值为null。

3、举例:

例1:select concat (id, name, score) as info from tt2;

中间有一行为null是因为tt2表中有一行的score值为null。

例2:在例1的结果中三个字段id,name,score的组合没有分隔符,我们可以加一个逗号作为分隔符:

这样看上去似乎顺眼了许多~~

但是输入sql语句麻烦了许多,三个字段需要输入两次逗号,如果10个字段,要输入九次逗号...麻烦死了啦,有没有什么简便方法呢?——于是可以指定参数之间的分隔符的concat_ws()来了!!!

二、concat_ws()函数

1、功能:和concat()一样,将多个字符串连接成一个字符串,但是可以一次性指定分隔符~(concat_ws就是concat with separator)

2、语法:concat_ws(separator, str1, str2, ...)

说明:第一个参数指定分隔符。需要注意的是分隔符不能为null,如果为null,则返回结果为null。

3、举例:

例3:我们使用concat_ws()将 分隔符指定为逗号,达到与例2相同的效果:

例4:把分隔符指定为null,结果全部变成了null:

三、group_concat()函数

前言:在有group by的查询语句中,select指定的字段要么就包含在group by语句的后面,作为分组的依据,要么就包含在聚合函数中。(有关group by的知识请戳:浅析SQL中Group By的使用)。

例5:

该例查询了name相同的的人中最小的id。如果我们要查询name相同的人的所有的id呢?

当然我们可以这样查询:

例6:

但是这样同一个名字出现多次,看上去非常不直观。有没有更直观的方法,既让每个名字都只出现一次,又能够显示所有的名字相同的人的id呢?——使用group_concat()

1、功能:将group by产生的同一个分组中的值连接起来,返回一个字符串结果。

2、语法:group_concat( [distinct] 要连接的字段 [order by 排序字段 asc/desc ] [separator '分隔符'] )

说明:通过使用distinct可以排除重复值;如果希望对结果中的值进行排序,可以使用order by子句;separator是一个字符串值,缺省为一个逗号。

3、举例:

例7:使用group_concat()和group by显示相同名字的人的id号:

例8:将上面的id号从大到小排序,且用'_'作为分隔符:

例9:上面的查询中显示了以name分组的每组中所有的id。接下来我们要查询以name分组的所有组的id和score:

到此这篇关于sql查询结果列拼接成逗号分隔的字符串方法的文章就介绍到这了,更多相关sql 逗号分隔字符串内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SQL计算用户留存率问题

    SQL计算用户留存率问题

    电商业务中需要计算用户留存情况,在时间维度上可以分为用户次日、多日后的留存情况,本文就来详细的介绍一下如何计算,具有一定的参考价值,感兴趣的可以了解一下
    2024-09-09
  • Mybatis SQL注解使用场景分析

    Mybatis SQL注解使用场景分析

    MyBatis 提供了几种常用的注解,主要用于简化 XML 映射文件的编写,使得 SQL 查询和操作可以直接在 Java 接口中定义,这篇文章主要介绍了Mybatis SQL注解使用场景,需要的朋友可以参考下
    2024-07-07
  • 浅谈数据库优化方案

    浅谈数据库优化方案

    这篇文章主要为大家详细介绍了数据库优化方案,具有一定的参考价值和实用性,感兴趣的小伙伴们可以参考一下
    2016-08-08
  • [图文]三分钟学会Sql Server的复制功能

    [图文]三分钟学会Sql Server的复制功能

    有两个服务器,装了两个数据库,一个是主的,一个是备用的,下面的的功能就将主数据库的数据库,实时同步到备用数据库上,使他们的数据内容,基本上保持一致。
    2008-07-07
  • SQL Server数据库错误829的修复办法

    SQL Server数据库错误829的修复办法

    SQL Server 错误 829 是与 SQL Server 页面相关的错误,当用户尝试自动修复主数据库中的页面,但由于某种原因而失败时,可能会发生 SQL Server 错误 829,所以本文给大家介绍了如何修复 SQL Server 数据库错误 829,需要的朋友可以参考下
    2024-08-08
  • SQL Server误区30日谈 第7天 一个实例多个镜像和日志传送延迟

    SQL Server误区30日谈 第7天 一个实例多个镜像和日志传送延迟

    这个误区就有点老生常谈了。每一个主体服务器只允许一个镜像服务器。如果你希望存在多个主体服务器的副本,那么请使用事务日志传送,事务日志传送允许针对每一个主体存在多个辅助实例
    2013-01-01
  • sql server编写通用脚本实现获取一年前日期的方法

    sql server编写通用脚本实现获取一年前日期的方法

    这篇文章主要介绍了sql server编写通用脚本实现获取一年前日期,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-07-07
  • Sql中Update的From语句及常见更新操作方式

    Sql中Update的From语句及常见更新操作方式

    在SQL中,更新数据是数据库管理中常见且重要的操作之一,本文主要介绍了Sql中Update的From语句及常见更新操作方式,具有一定的参考价值,感兴趣的可以了解一下
    2024-04-04
  • SQL Server DATEADD函数详解

    SQL Server DATEADD函数详解

    在SQL Server中,DATEADD函数用于在日期中添加或减去指定的时间间隔,这个函数能够处理日期天数、小时、分钟、秒、毫秒等各种单位,返回一个新日期
    2023-08-08
  • SQL SERVER临时表排序问题的解决方法

    SQL SERVER临时表排序问题的解决方法

    这篇文章主要给大家介绍了关于SQL SERVER临时表排序问题的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01

最新评论