---
title: "XMLAGG - OceanBase 数据库 V4.6.0 | OceanBase 文档中心"
description: "XMLAGG 描述 该函数获取一组 XML 片段并返回一个聚合的 XML 文档。可以将其用作聚合函数。 语法 XMLAGG(XMLType_instance [ ORDER BY [list of: expr [ASC|DESC] [NULLS {FIRST|LAST}]] ]) 参数解释 字段 说明 XMLType…"
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*P8CuR4UJ_FkAAAAAAAAAAAAADiGDAQ/original) OceanBase 数据库分布式版 - V 4.6.0

# XMLAGG

更新时间：2026-07-15 15:27:39

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.6.0/zh-CN/700.reference/500.sql-reference/100.sql-syntax/300.common-tenant-of-oracle-mode/500.functions-of-oracle-mode/200.single-row-functions-of-oracle-mode/1300.xml-functions-of-oracle-mode/200.construct-xmltype-data-functions-of-oracle-mode/100.xmlagg-function-of-oracle-mode.md)  

## 描述

该函数获取一组 XML 片段并返回一个聚合的 XML 文档。可以将其用作聚合函数。

## 语法

```sql
XMLAGG(XMLType_instance [ ORDER BY [list of: expr [ASC|DESC] [NULLS {FIRST|LAST}]] ])

```

## 参数解释

| 字段 | 说明 |
| --- | --- |
| XMLType_instance | 指定 XMLType 类型的数据，可以是 XMLType 列或者返回类型为 XMLType 的表达式。 |
| expr | 指定要排序的值对应的列名。   **注意** 数字类型不能作为列的位置信息，例如 `ORDER BY 1` 并不是按照第一列排序的意思。 |
| ASC \| DESC | 指定列表的排序方式，为可选项。   - `ASC` 为升序排序，为默认值。 - `DESC` 为降序排序。 |
| NULLS {FIRST \| LAST} | 排序后 `expr` 中 `NULL` 值的位置，为可选项。   - `NULLS FIRST`： 表示 `NULL` 值排在非空值的前面。 - `NULLS LAST` ：表示 `NULL` 值排在非空值的后面，为默认值。 |

## 返回类型

返回 XMLType 数据类型。

## 示例

```shell
# 现有已创建表 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

```

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
