Skip to content

适用虚谷数据库版本

v12.9



适用虚谷数据库版本

v12.9


XMLTABLE

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

功能描述

将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_dataXML数据。
  • 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 |
+-------------+--------------+-------------+------+-------+