Skip to content

适用虚谷数据库版本

v12.9



适用虚谷数据库版本

v12.9


XMLAGG

📄字数 811
👁️阅读量 加载中...

功能描述

将多行数据转换为一个XML类型的值。

语法格式

sql
XMLAGG((XMLELEMENT ( xmlname, xml_attributes, xmlvalue )))

xml_attributes ::= XMLATTRIBUTES ( xml_attribute_list )
xml_attribute_list ::= ( { xml_attribute } [ , ... ] )
xml_attribute ::= val AS name | IDENT

输入参数

  • xmlnameXML的标签名。
  • xml_attributes:属性值,由XMLATTRIBUTES函数生成,为可选项。
  • xmlvalue:节点值,为可选项。
  • [ , ... ]:表示可以有多个xml_attribute,每个属性之间用逗号分隔。
  • val AS name:指定一个属性,其中val是属性值name是属性名称。
  • IDENT:直接使用列名或表达式作为属性名称和属性值。

输出结果

CHAR类型,输入参数为NULL,返回NULL

示例

sql
--使用XMLAGG函数将多行数据聚合成一个XML元素,并通过 ORDER BY子句对结果进行排序。
SQL> CREATE TABLE test_xmlagg(id INT,name VARCHAR,addr VARCHAR,age INT);

SQL> INSERT INTO test_xmlagg VALUES(1,'aa','street 01',11);
SQL> INSERT INTO test_xmlagg VALUES(2,'bb','street 01',12);

-- ORDER BY age
SQL> SELECT XMLAGG(XMLELEMENT("person",t.name || ' ' || t.addr)) AS person_info FROM test_xmlagg t ORDER BY t.age;

+------------------------------------------------------------+
|                        PERSON_INFO                         |
+------------------------------------------------------------+
| <person>aa street 01</person><person>bb street 01</person> |
+------------------------------------------------------------+


-- ORDER BY age DESC
SQL> SELECT XMLAGG(XMLELEMENT("person",t.name || ' ' || t.addr)) AS person_info FROM test_xmlagg t ORDER BY t.age DESC;

+------------------------------------------------------------+
|                        PERSON_INFO                         |
+------------------------------------------------------------+
| <person>aa street 01</person><person>bb street 01</person> |
+------------------------------------------------------------+