文章目录

  • 第十三章 SQL聚合函数 XMLAGG
  • 大纲
  • 参数
  • 描述
  • XML和XMLAGG
  • XMLAGG和ORDER BY
  • 相关聚合函数
  • 示例

第十三章 SQL聚合函数 XMLAGG

一个聚合函数,它创建一个串接的值字符串。

大纲

XMLAGG([ALL | DISTINCT [BY(col-list)]] string-expr [%FOREACH(col-list)] [%AFTERHAVING])

参数

  • ALL - 可选-指定XMLAGG返回string-expr的所有值的连接字符串。
    如果没有指定关键字,这是默认值。
  • DISTINCT - 可选-一个DISTINCT子句,指定XMLAGG返回一个只包含唯一string-expr值的连接字符串。
    DISTINCT可以指定BY(colo -list)子句,其中colo -list可以是单个字段,也可以是用逗号分隔的字段列表。
  • string-expr - 计算结果为字符串的SQL表达式。
    通常,这是要从其中检索数据的列的名称。
  • %FOREACH(col-list) - 可选-列名或以逗号分隔的列名列表。
  • %AFTERHAVING - 可选-应用在HAVING子句中的条件。

描述

XMLAGG聚合函数返回由string-expr中的所有值组成的串接字符串。
返回值的数据类型为VARCHAR,默认长度为4096

  • 一个简单的XMLAGG(或XMLAGG ALL)返回一个字符串,该字符串包含一个由所选行中string-expr的所有值组成的连接字符串。
    string-exprNULL的行将被忽略。

以下两个示例都返回相同的单个值,即Sample.Person表的Home_State列中列出的所有值的串联字符串。

SELECT XMLAGG(Home_State) AS All_State_Values
FROM Sample.Person

SELECT XMLAGG(ALL Home_State) AS ALL_State_Values
FROM Sample.Person

请注意,此连接字符串包含重复值。

  • XMLAGG DISTINCT返回由所选行中string-expr的所有不同(唯一)值组成的连接字符串:XMLAGG(DISTINCT COL1)。将忽略string-exprNULL的行。XMLAGG(DISTINCT BY(Col2)col1)返回一个串联字符串,该字符串仅包含col2值不同(唯一)的记录中的col1字段值。然而,请注意,不同的col2值可以包括单个NULL作为不同的值。

返回值中将省略string-expr为NULL的行。如果至少返回一个非空字符串值,则从返回值中省略string-expr为空字符串('')的行。如果唯一非空的string-expr值是空字符串(''),则返回值是单个空字符串。

XMLAGG不支持数据流字段。为string-expr指定流字段会导致SQLCODE-37

XML和XMLAGG

XMLAGG的一个常见用法是标记列中的每个数据项。这是通过组合XMLAGGXMLELEMENT来实现的,如下例所示:

SELECT XMLAGG(XMLELEMENT("para",Home_State))
FROM Sample.Person

这将产生如下所示的输出字符串:

<para>LA</para><para>MN</para><para>LA</para><para>NH</para><para>ME</para>...

XMLAGG和ORDER BY

XMLAGG函数将来自多行的表列的值连接到单个字符串中。因为在计算所有聚合字段之后,将逐个从句应用于查询结果集,所以逐个不能直接影响该字符串中的值序列。在某些情况下,XMLAGG结果可能会按顺序显示,但不应依赖此排序。给定聚合结果值中列出的值无法显式排序。

相关聚合函数

  • XMLAGG返回一个串连的值字符串。
  • LIST返回值的逗号分隔列表。
  • %DLIST返回包含每个值的元素IRIS列表。
  • JSON_ARRAYAGG返回值的JSON数组。

示例

下面的示例创建在Sample.Person表的FavoriteColors列中找到的所有不同值的串联字符串。因此,对于ALL_COLLES列,每行都有相同的值。请注意,虽然有些行的FavoriteColors为空值,但该值不包括在连接的字符串中。数据值以内部格式返回。

SELECT Name,FavoriteColors,XMLAGG(DISTINCT FavoriteColors) AS All_Colors_In_Table
FROM Sample.Person
ORDER BY FavoriteColors

下面的示例返回以“A”开头的Home_State值的串联字符串。它返回不同的Home_State值(不同的Home_State);与不同的Home_City值对应的Home_State值(与(Home_City)Home_State不同),其中可能包括Home_City的一个唯一NULL;以及所有Home_State值:

SELECT XMLAGG(DISTINCT Home_State) AS DistStates,XMLAGG(DISTINCT BY(Home_City) Home_State) AS DistCityStates,XMLAGG(Home_State) AS AllStates
FROM Sample.Person
WHERE Home_State %STARTSWITH 'A'

下面的示例为每个州创建在Home_City列中找到的所有不同值的串联字符串。同一州的每一行都包含该州所有不同城市值的列表:

SELECT Home_State, Home_City,XMLAGG(DISTINCT Home_City %FOREACH(Home_State)) AS All_Cities_In_State
FROM Sample.Person
ORDER BY Home_State

以下示例使用%AFTERHAVING关键字。它为每个包含至少一个满足HAVING子句条件(以“C”“K”开头的名称)的Name值的Home_State返回一行。第一个XMLAGG函数返回由该州的所有名称组成的连接字符串。第二个XMLAGG函数返回仅由满足HAVING子句条件的名称组成的连接字符串:

SELECT Home_State,XMLAGG(Name) AS AllNames,XMLAGG(Name %AFTERHAVING) AS HaveClauseNamesFROM Sample.PersonGROUP BY Home_StateHAVING Name LIKE 'C%' OR Name LIKE 'K%' ORDER BY Home_state

对于以下示例,假设我们有下表AutoClub

Name Make Model Year
Smith,Joe Pontiac Firebird 1971
Smith,Joe Saturn SW2 1997
Smith,Joe Pontiac Bonneville 1999
Jones,Scott Ford Mustang 1966
Jones,Scott Mazda Miata 2000
SELECT DISTINCT Name, XMLAGG(Make) AS String_Of_Makes
FROM AutoClub WHERE Name = 'Smith,Joe'
Name String_Of_Makes
Smith,Joe PontiacSaturnPontiac
SELECT DISTINCT Name, XMLAGG(DISTINCT Make) AS String_Of_Makes
FROM AutoClub WHERE Name = 'Smith,Joe'
Name String_Of_Makes
Smith,Joe PontiacSaturn

第十三章 SQL聚合函数 XMLAGG相关推荐

  1. 第五章 SQL聚合函数 %DLIST

    文章目录 第五章 SQL聚合函数 %DLIST 大纲 参数 描述 %DLIST 和 %SelectMode %DLIST和ORDER BY 相关的聚合函数 示例 第五章 SQL聚合函数 %DLIST ...

  2. 第七章 SQL聚合函数 LIST

    文章目录 第七章 SQL聚合函数 LIST 大纲 参数 描述 包含逗号的数据值 LIST 和 %SelectMode LIST 和 ORDER BY 最大列表大小 相关的聚合函数 示例 第七章 SQL ...

  3. 第十二章 SQL聚合函数 VARIANCE, VAR_SAMP, VAR_POP

    文章目录 第十二章 SQL聚合函数 VARIANCE, VAR_SAMP, VAR_POP 大纲 参数 描述 当前事务期间所做的更改 示例 第十二章 SQL聚合函数 VARIANCE, VAR_SAM ...

  4. 第二章 SQL聚合函数 AVG

    文章目录 第二章 SQL聚合函数 AVG 大纲 参数 描述 数据值 对单个值求平均值 优化 当前事务期间所做的更改 示例 第二章 SQL聚合函数 AVG 返回指定列值的平均值的聚合函数. 大纲 AVG ...

  5. 第九章 SQL聚合函数 MIN

    文章目录 第九章 SQL聚合函数 MIN 大纲 参数 描述 数据值 在当前事务期间所做的更改 示例 第九章 SQL聚合函数 MIN 返回指定列中的最小数据值的聚合函数. 大纲 MIN([ALL | D ...

  6. 第三章 SQL聚合函数 COUNT(一)

    文章目录 第三章 SQL聚合函数 COUNT(一) 大纲 参数 描述 没有行返回 流字段 第三章 SQL聚合函数 COUNT(一) 返回表或指定列中的行数的聚合函数. 大纲 COUNT(*)COUNT ...

  7. 第四章 SQL聚合函数 COUNT(二)

    文章目录 第四章 SQL聚合函数 COUNT(二) 权限 性能 未提交事务所做的更改 示例 第四章 SQL聚合函数 COUNT(二) 权限 要使用COUNT(*),必须对指定的表具有表级别的SELEC ...

  8. 第十一章 SQL聚合函数 SUM

    文章目录 第十一章 SQL聚合函数 SUM 大纲 参数 描述 数据值 优化 当前事务期间所做的更改 示例 第十一章 SQL聚合函数 SUM 返回指定列值之和的聚合函数. 大纲 SUM([ALL | D ...

  9. 第二十三章 SQL函数 CAST(二)

    文章目录 第二十三章 SQL函数 CAST(二) 转换位值 示例 第二十三章 SQL函数 CAST(二) 转换位值 可以将expr值转换为BIT以返回0或1. 如果expr为1或任何其他非零数值,则返 ...

最新文章

  1. Android Toast自己定义Toast例子
  2. 【Linux 内核】编译 Linux 内核 ④ ( 打开 Linux 内核编译 菜单配置 |菜单配置中的光标移动与选中状态 | 保存配置 | 配置项帮助文档 )
  3. LINUX 使用tcgetattr函数与tcsetattr函数控制终端一
  4. Linux环境下安装Python第三方库
  5. 【数据结构与算法】【算法思想】位图
  6. 领航机器人广告段子_医院机器人物流广告词_段子网收录最新段子
  7. C#中泛型类型约束条件
  8. linux 内存查看_Linux终端查看最消耗CPU内存的进程
  9. python获取网络时间_python获取网络时间和本地时间
  10. 无人驾驶服务器适合部署在哪个位置,手机位置服务器在哪里设置的
  11. 使用Zuul构建API Gateway
  12. 单片机c语言数字频率计课程设计,单片机数字频率计设计和调试 课程设计论文...
  13. C#编程之委托与事件(一)
  14. 待续--mysql中key 、primary key 、unique key 与index区别
  15. 【ECSHOP插件】ECSHOP会员头像,上传头像评论显示头像
  16. Windows server 2019的系统激活码 激活windows server 2012r2系统
  17. linux系统编程实训总结,linux实训总结与体会
  18. 许丹萍 计算机系,【晋江市“十佳少先队辅导员”】第二实验小学老师许丹萍: 关注每一个队员的成长...
  19. 组合业务流程管理与区块链
  20. 基于ssm的奥博羽毛球俱乐部管理系统-计算机毕业设计

热门文章

  1. RobotFramework(一)
  2. OSG 渲染剖析 之 Geometry 的 VBO生成
  3. 【机器学习】Pandas入门
  4. Java面试题,java四舍五入保留小数点后四位
  5. CCBN 2023看点分析:国产8K摄像机国产化替代趋势增强
  6. python bar图_python可视化(matplotlib条形图、散点图)
  7. 表格结构识别 SPLERGE tf/keras 实现(下)
  8. 基于深度学习的Action Recognition(行为识别)【二】
  9. 微信屏蔽内置浏览器的下载功能的解决方案:微信跳转到手机默认浏览器下载
  10. Mongodb集群搭建的三种方式