第十三章 SQL聚合函数 XMLAGG
文章目录
- 第十三章 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-expr
为NULL
的行将被忽略。
以下两个示例都返回相同的单个值,即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-expr
为NULL
的行。XMLAGG(DISTINCT BY(Col2)col1)
返回一个串联字符串,该字符串仅包含col2
值不同(唯一)的记录中的col1
字段值。然而,请注意,不同的col2
值可以包括单个NULL
作为不同的值。
返回值中将省略string-expr
为NULL的行。如果至少返回一个非空字符串值,则从返回值中省略string-expr
为空字符串(''
)的行。如果唯一非空的string-expr
值是空字符串(''
),则返回值是单个空字符串。
XMLAGG
不支持数据流字段。为string-expr
指定流字段会导致SQLCODE-37
。
XML和XMLAGG
XMLAGG
的一个常见用法是标记列中的每个数据项。这是通过组合XMLAGG
和XMLELEMENT
来实现的,如下例所示:
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相关推荐
- 第五章 SQL聚合函数 %DLIST
文章目录 第五章 SQL聚合函数 %DLIST 大纲 参数 描述 %DLIST 和 %SelectMode %DLIST和ORDER BY 相关的聚合函数 示例 第五章 SQL聚合函数 %DLIST ...
- 第七章 SQL聚合函数 LIST
文章目录 第七章 SQL聚合函数 LIST 大纲 参数 描述 包含逗号的数据值 LIST 和 %SelectMode LIST 和 ORDER BY 最大列表大小 相关的聚合函数 示例 第七章 SQL ...
- 第十二章 SQL聚合函数 VARIANCE, VAR_SAMP, VAR_POP
文章目录 第十二章 SQL聚合函数 VARIANCE, VAR_SAMP, VAR_POP 大纲 参数 描述 当前事务期间所做的更改 示例 第十二章 SQL聚合函数 VARIANCE, VAR_SAM ...
- 第二章 SQL聚合函数 AVG
文章目录 第二章 SQL聚合函数 AVG 大纲 参数 描述 数据值 对单个值求平均值 优化 当前事务期间所做的更改 示例 第二章 SQL聚合函数 AVG 返回指定列值的平均值的聚合函数. 大纲 AVG ...
- 第九章 SQL聚合函数 MIN
文章目录 第九章 SQL聚合函数 MIN 大纲 参数 描述 数据值 在当前事务期间所做的更改 示例 第九章 SQL聚合函数 MIN 返回指定列中的最小数据值的聚合函数. 大纲 MIN([ALL | D ...
- 第三章 SQL聚合函数 COUNT(一)
文章目录 第三章 SQL聚合函数 COUNT(一) 大纲 参数 描述 没有行返回 流字段 第三章 SQL聚合函数 COUNT(一) 返回表或指定列中的行数的聚合函数. 大纲 COUNT(*)COUNT ...
- 第四章 SQL聚合函数 COUNT(二)
文章目录 第四章 SQL聚合函数 COUNT(二) 权限 性能 未提交事务所做的更改 示例 第四章 SQL聚合函数 COUNT(二) 权限 要使用COUNT(*),必须对指定的表具有表级别的SELEC ...
- 第十一章 SQL聚合函数 SUM
文章目录 第十一章 SQL聚合函数 SUM 大纲 参数 描述 数据值 优化 当前事务期间所做的更改 示例 第十一章 SQL聚合函数 SUM 返回指定列值之和的聚合函数. 大纲 SUM([ALL | D ...
- 第二十三章 SQL函数 CAST(二)
文章目录 第二十三章 SQL函数 CAST(二) 转换位值 示例 第二十三章 SQL函数 CAST(二) 转换位值 可以将expr值转换为BIT以返回0或1. 如果expr为1或任何其他非零数值,则返 ...
最新文章
- Android Toast自己定义Toast例子
- 【Linux 内核】编译 Linux 内核 ④ ( 打开 Linux 内核编译 菜单配置 |菜单配置中的光标移动与选中状态 | 保存配置 | 配置项帮助文档 )
- LINUX 使用tcgetattr函数与tcsetattr函数控制终端一
- Linux环境下安装Python第三方库
- 【数据结构与算法】【算法思想】位图
- 领航机器人广告段子_医院机器人物流广告词_段子网收录最新段子
- C#中泛型类型约束条件
- linux 内存查看_Linux终端查看最消耗CPU内存的进程
- python获取网络时间_python获取网络时间和本地时间
- 无人驾驶服务器适合部署在哪个位置,手机位置服务器在哪里设置的
- 使用Zuul构建API Gateway
- 单片机c语言数字频率计课程设计,单片机数字频率计设计和调试 课程设计论文...
- C#编程之委托与事件(一)
- 待续--mysql中key 、primary key 、unique key 与index区别
- 【ECSHOP插件】ECSHOP会员头像,上传头像评论显示头像
- Windows server 2019的系统激活码 激活windows server 2012r2系统
- linux系统编程实训总结,linux实训总结与体会
- 许丹萍 计算机系,【晋江市“十佳少先队辅导员”】第二实验小学老师许丹萍: 关注每一个队员的成长...
- 组合业务流程管理与区块链
- 基于ssm的奥博羽毛球俱乐部管理系统-计算机毕业设计