Skip to content

XMLTABLE

功能描述

将XML格式的数据转换为数据库表结构。

注意:

当前版本XMLTABLE仅支持在数据库单节点使用,暂不支持集群使用。

XML数据类型的详细信息请参见《SQL语法参考指南》的XML数据类型章节。

语法格式

XMLTABLE:

XMLTABLE ( xmltable_exprs [ alias_clause ] )

xmltable_exprs:

xmltable_exprs ::= XQuery_father PASSING XML_data COLUMNS xmltable_new_columns

xmltable_new_columns ::= xmltable_new_column | xmltable_new_columns, xmltable_new_column
                    
xmltable_new_column ::= name TYPENAME PATH XQuery_child

参数说明

  • alias_clause:可选,用于为XMLTABLE返回的结果集指定一个别名。
  • XQuery_father:父级XQuery表达式。
  • XML_data:XML数据。
  • XQuery_child:子XQuery表达式。
  • name:返回的表结构的字段名。

函数返回类型

TABLE类型。

示例

sql
-- 查询
SQL> CREATE TABLE test_xmltable(id INT,xml_col XML,insert_time DATE);
SQL> INSERT INTO test_xmltable VALUES(1,'<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
<book category="COOKING">
<title lang="en">Everyday Italian</title>
<author>Giada De Laurentis</author>
<year>2005</year>
<price>30.00</price>
</book>
<book category="CHILDREN">
<title lang="en">Harry Potter</title>
<author>J K.Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
<book category="WEB">
<title lang="en">XQuery Kick Start</title>
<author>James McGovern</author>
<year>2003</year>
<price>49.99</price>
</book>
<book category="WEB">
<title lang="en">Learning XML</title>
<author>Erik T.RAY</author>
<year>2003</year>
<price>39.95</price>
</book>
</bookstore>
','2020-03-01');
SQL> SELECT t1.insert_time,t2."title",t2."author",t2."year",t2."price" 
FROM test_xmltable t1,XMLTABLE(
'//book[@category="CHILDREN"]'
PASSING t1.xml_col
COLUMNS "title" VARCHAR PATH 'title',
 "author" VARCHAR PATH 'author',
 "year" VARCHAR PATH 'year',
 "price" VARCHAR PATH 'price'
) t2
WHERE t1.id =1;

insert_time |title |author |year |price |
------------------------------------------------------------------------------
2020-03-01 |Harry Potter |J K.Rowling |2005 |29.99 |