SQL Server实现group_concat函数

这篇具有很好参考价值的文章主要介绍了SQL Server实现group_concat函数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、mysql数据库group_concat函数

情景:每个人有多张银行卡,现在需统计出每个人的银行卡并展示成一行,表单如下:

group_concat sqlserver,sql,数据库,sql,Powered by 金山文档

实现sql:

group_concat() 函数将组中的字符串连接成为具有各种选项的单个字符串。

select name,group_concat(bankCard  separator ',') as bankCards from uf_yhk group by name

separator 指定在组中的值之间插入的文字值,默认 ' , '

group_concat sqlserver,sql,数据库,sql,Powered by 金山文档

二、SQL Server实现group_concat函数

  1. 实现sql:

select name,
       STUFF(
       (select ',' + a.bankCard from (select id,name,bankCard from uf_yhk) a where a.name = b.name FOR XML PATH('') )
       ,1,1,'') as bankCards
 from (select id,name,bankCard from uf_yhk)  b  group by name 
  1. 原理分析:

2.1 FOR XML PATH('')函数,使结果集转为XML文档形式

select id,name,bankCard from uf_yhk FOR XML PATH(''); 
<id>1</id><name>张三</name><bankCard>500301</bankCard>
<id>2</id><name>李四</name><bankCard>500302</bankCard>
<id>3</id><name>张三</name><bankCard>500303</bankCard>
<id>4</id><name>李四</name><bankCard>500304</bankCard>
<id>5</id><name>王五</name><bankCard>500305</bankCard>
<id>6</id><name>张三</name><bankCard>500306</bankCard>

2.2 转换成单字符串

select ',' + a.bankCard   from (select id,name,bankCard from uf_yhk) a where a.name = '张三' FOR XML PATH('') 
,500301,500303,500306

2.3 STUFF(string,start,length,substring)用于替换字符串中的子字符串。

  • string - 作为子字符串替换目标的字符串表达式。

  • start - 替换的起点,指定为正整数。从字符串开头开始的字符数,从 1 开始计数。允许的值为 0 到字符串的长度。要追加字符,请指定 0 的开头和 0 的长度。空字符串或非数字值被视为 0。

  • length - 要替换的字符数,指定为正整数。要插入字符,请将长度指定为 0。要在开始后替换所有字符,请指定大于现有字符数的长度。空字符串或非数字值被视为 0。

  • substring - 一个字符串表达式,用于替换由其起始点和长度标识的子字符串。可以比它替换的子字符串更长或更短。可以是空字符串。

select STUFF(
            (select ',' + a.bankCard   from (select id,name,bankCard from uf_yhk) a where a.name = '张三' FOR XML PATH(''))
        ,1,1,'')

2.4通过子查询得到拼接后的数据

注意看2.2我限制了条件a.name = '张三' 就相当于a.name = b.name

group_concat sqlserver,sql,数据库,sql,Powered by 金山文档

最后 group by name ,就大功告成。

三、Oracle数据库实现

1.vm_concat函数:

select vm_concat('需要拼接的列名称','拼接符号') from table_name group by '聚合的列名'

注意:高版本oracle不建议使用

2.listagg() within函数 :

SELECT LISTAGG('需要拼接的列名称','拼接符号') within group (order by '排序的列名') from table_name文章来源地址https://www.toymoban.com/news/detail-583667.html

到了这里,关于SQL Server实现group_concat函数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • mysql~GROUP_CONCAT实现关系表的行转列

    GROUP_CONCAT 是 MySQL 中用于将查询结果集中的多行数据合并为单个字符串的聚合函数。它将每行数据的指定字段值连接起来,并以指定的分隔符分隔,最终返回一个包含所有值的字符串。 以下是 GROUP_CONCAT 函数的一般语法: column_name:要连接的字段名。 SEPARATOR:可选参数,用于

    2024年04月12日
    浏览(35)
  • 【含面试】解锁MySQL group_concat的无限可能性:解决长度限制并实现高效查询

    AI绘画关于SD,MJ,GPT,SDXL百科全书 面试题分享点我直达 2023Python面试题 2023最新面试合集链接 2023大厂面试题PDF 面试题PDF版本 java、python面试题 项目实战:AI文本 OCR识别最佳实践 AI Gamma一键生成PPT工具直达链接 玩转cloud Studio 在线编码神器 玩转 GPU AI绘画、AI讲话、翻译,GPU点亮AI想象

    2024年02月04日
    浏览(73)
  • MySql中group_concat字符长度限制

    group_concat长度限制默认是1024,有两个解决方法: 1. 彻底修改,找到MYSQL的配置文件my.ini或者my.cnf,在里面添加以下信息 group_concat_max_len = -1  # -1为最大值或填入你要的最大长度 或者自己设置group_concat_max_len = 1024000。 注意:需要重启MySQL才能生效。 2. 在客户端连上mysql,执行语

    2024年04月28日
    浏览(40)
  • mysql的group_concat字段的长度限制

    在使用group_concat进行数据分组查询的时候会出现数据只出现一部分的状况,这种是因为group_concat这个字段的字符长度不够,在信息超高这个长度的时候会自动的截取,如果想要解决这个问题的话需要进行额外的设置 修改mysql配置文件my.ini ,默认情况下是没有group concat max len项

    2024年02月13日
    浏览(43)
  • 一个mysql的group_concat导致的问题

    好久都没有写点东西了,是时候有点写东西的必要了。 去年下年底离职了,躺了几个月,最近又兜兜转转换了一家公司继续当牛马了,前段时间八股文背了好多,难受呀,不过我也趁着前段时间自己也整理了属于我自己的八股文,有好几万字吧,哈哈哈,以后就不用到处去找

    2024年02月06日
    浏览(45)
  • mysql 查询的字段值太长显示不全 group_concat

    当前这个字段非常的长,在数据库看的时候也只是显示一部分内容,这是由于group_concat的group_concat_max_len参数的值太小造成的,默认值如下:  我们需要将这个值调大一点就可以解决上面这个问题了:  

    2024年02月11日
    浏览(43)
  • mysql 字符 1024个字符限制 cast转为varchar 不限制字符长度 最大字符长度 group_concat长度限制

    设置group_concat的最大长度然后再运行

    2024年02月16日
    浏览(62)
  • SQLServer CONCAT函数

            在SQL Server中,CONCAT函数用于将两个或多个字符串连接在一起,返回一个新的字符串。可以将任意数量的字符串连接在一起,并且可以包含任何类型的字符串,包括常量、变量、列名和其他函数的结果。         ​​​在SQL Server中,使用 CONCAT 函数比直接使用

    2024年02月11日
    浏览(39)
  • SqlServer2019—解决SQL Server 无法连接127.0.0.1的问题

    1、打开SQL Server 2019配置管理器 2、SQL Servere 网络配置(启用 Named Pipes 和 TCP/IP)  3、修改TCP/IP协议(右键选择属性—IP地址),具体如下图所示:  4、重启SQL Server服务  

    2024年02月11日
    浏览(51)
  • HIVE SQL实现分组字符串拼接concat

    在Mysql中可以通过 group_concat() 函数实现分组字符串拼接,在HIVE SQL中可以使用 concat_ws()+collect_set()/collect_list() 函数实现相同的效果。 实例: a b c 2014 B 9 2015 A 8 2014 A 10 2015 B 7 2014 B 6 1.concat_ws+collect_list 非去重拼接 查询结果: a col_b col_c 2014 B-A-B 9-10-6 2015 A-B 8-7 2.concat_ws+collect_se

    2024年02月12日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包