在Oracle SQL中,XMLTABLE函数用于解析XML数据并将其转换为关系表
CREATE TABLE example (
id NUMBER,
xml_data CLOB
);
INSERT INTO example (id, xml_data) VALUES (
1,
'<?xml version="1.0" encoding="UTF-8"?>
<root>
<item id="1">
<name>Item 1</name>
<price>100</price>
</item>
<item id="2">
<name>Item 2</name>
<price>1000</price>
</item>
</root>'
);
假设我们想要从xml_data
列中提取item
元素的id
和name
属性。我们可以使用XMLTABLE函数结合属性名称来实现这一目标:
SELECT x.id, x.name
FROM example e,
XMLTABLE('/root/item' PASSING XMLTYPE(e.xml_data) AS xml
RETURNING CONTENT AS item,
XMLATTRIBUTES(x.id AS id, x.name AS name)) x;
在这个例子中,我们使用XMLTABLE函数解析xml_data
列中的XML数据。/root/item
是XPath表达式,用于选择所有的item
元素。PASSING
子句将XML数据传递给XMLTABLE函数。RETURNING CONTENT AS item
表示返回的表中的每一行对应于一个item
元素。XMLATTRIBUTES
子句用于提取item
元素的id
和name
属性,并将它们分别命名为id
和name
。
执行上述SQL语句,将会得到以下结果:
id name
---------- 1 Item 1
2 Item 2
通过这种方式,我们可以将XMLTABLE与属性名称结合使用,从而方便地提取XML数据中的特定属性。
领取专属 10元无门槛券
手把手带您无忧上云