首批通过分布式安全可靠测评,为关键业务系统打造
XMLAGG
更新时间:2026-03-25 12:23:53
描述
该函数获取一组 XML 片段并返回一个聚合的 XML 文档。可以将其用作聚合函数。
语法
XMLAGG(XMLType_instance [ ORDER BY [list of: expr [ASC|DESC] [NULLS {FIRST|LAST}]] ])
参数解释
| 字段 | 说明 |
|---|---|
| XMLType_instance | 指定 XMLType 类型的数据,可以是 XMLType 列或者返回类型为 XMLType 的表达式。 |
| expr | 指定要排序的值对应的列名。 注意 数字类型不能作为列的位置信息,例如 ORDER BY 1 并不是按照第一列排序的意思。 |
| ASC | DESC | 指定列表的排序方式,为可选项。
|
| NULLS {FIRST | LAST} | 排序后 expr 中 NULL 值的位置,为可选项。
|
返回类型
返回 XMLType 数据类型。
示例
# 现有已创建表 employees
obclient> SELECT * FROM EMPLOYEES;
+------+-----------+------+
| ID | LAST_NAME | SAL |
+------+-----------+------+
| 1 | CLARK | 2750 |
| 2 | KING | 5300 |
| 3 | MILLER | 1600 |
| 4 | ADAMS | 1400 |
+------+-----------+------+
4 rows in set
# 使用 XMLELEMENT 函数构建 XML 片段
obclient> SELECT XMLELEMENT(EVALNAME LAST_NAME, SAL) AS "RESULT" FROM EMPLOYEES;
+------------------------+
| RESULT |
+------------------------+
| <CLARK>2750</CLARK>
|
| <KING>5300</KING>
|
| <MILLER>1600</MILLER>
|
| <ADAMS>1400</ADAMS>
|
+------------------------+
4 rows in set
#使用 XMLAGG 将上述结果按照 SAL 顺序排序并聚合返回
obclient> SELECT XMLAGG(XMLELEMENT(EVALNAME LAST_NAME, SAL) ORDER BY SAL) AS "RESULT" FROM EMPLOYEES;
+----------------------------------------------------------------------------------+
| RESULT |
+----------------------------------------------------------------------------------+
| <ADAMS>1400</ADAMS>
<MILLER>1600</MILLER>
<CLARK>2750</CLARK>
<KING>5300</KING>
|
+----------------------------------------------------------------------------------+
1 row in set