在查询SQL时,经常需要将查询结果拼接成一个字符串。那么如何将sql查询结果列直接拼接成逗号分隔的字符串呢?让我们来看看吧。
背景:在进行SQL查询时,经常需要将查询结果拼接成一个字符串。
解决方法:使用group_concat函数。
拼接结果很长,导致拼接结果显示不完整,可以通过以下方法解决。
每次查询前执行set session group _ concat _ max _ len=10240;
或者设置全局group _ concat _ max _ len=10240
使得查询结果值变得更大。
补充:SQL server的拼接SQL如下:
selectstuff(( select , request id from nccombinedpayment for XML path()),1,1,)作为request id;
互补函数法:
的使用示例均在以下数据库表tt2下执行:
一、concat()函数
1.功能:将多个字符串连接成一个字符串。
2.语法:concat(str1,str2,)
结果是由连接参数生成的字符串。如果任何参数为空,则返回值为空。
3.例如:
示例:从tt2中选择concat (id,name,score)作为信息;
中间一行为空,因为tt2表中一行的分值为空。
示例2:在示例1的结果中,id、name和score三个字段的组合没有分隔符。我们可以添加一个逗号作为分隔符:
这个看着顺眼多了~ ~
但是,输入sql语句很麻烦。三个字段需要用逗号输入两次。如果10个字段需要用逗号输入九次.太麻烦了。有什么简单的方法吗?3354所以concat_ws(),可以指定参数之间的分隔符,来了!
二、concat_ws()函数
1.函数:和concat()一样,将多个字符串连接成一个字符串,但是可以指定分隔符~ (concat _ ws是带分隔符的concat)
2.语法:concat_ws(分隔符,str1,str2,)
注意:第一个参数指定分隔符。请注意,分隔符不能为空。如果为空,则返回的结果将为空。
3.例如:
示例3:我们使用concat_ws()将分隔符指定为逗号,实现了与示例2相同的效果:
示例4:将分隔符指定为null,所有结果都变为null:
三、group_concat()函数
在带有group by的查询语句中,由select指定的字段要么包含在group by语句之后作为分组的基础,要么包含在聚合函数中。(请戳关于group by的知识:SQL中Group By用法分析)。
示例5:
此示例查询同名人的最小id。如果我们想查询所有同名同姓的人的id怎么办?
当然,我们可以这样查询:
示例6:
但是同一个名字出现很多次,看起来很不直观。有没有更直观的方法,让每个名字只出现一次,显示所有同名人的id?3354使用group_concat()
1.函数:将group by生成的同一组中的值连接起来,返回一个字符串结果。
2.语法:group_concat( [distinct]要连接的字段[order by排序字段ASC/desc][分隔符分隔符])
注意:使用distinct可以排除重复值;如果要对结果中的值进行排序,可以使用order by子句;Separator是字符串值,默认值是逗号。
3.例如:
示例7:使用group_concat()和group by显示同名人员的id号:
示例8:将上述id号从最大到最小排序,并使用“_”作为分隔符:
示例9:上面的查询显示了按名称分组的每个组中的所有id。接下来,我们将查询按名称分组的所有组的id和分数:
关于将sql查询结果列拼接成逗号分隔的字符串的方法,本文到此结束。有关sql逗号分隔字符串的更多信息,请搜索我们以前的文章或继续浏览下面的相关文章。希望你以后能支持我们!