首批通过分布式安全可靠测评,为关键业务系统打造
EXTRACT
更新时间:2026-02-13 18:18:53
描述
该函数依据 Xpath 抽取一个 XML 片段,其结果是 Xpath 匹配到的所有节点的拼接。
语法
EXTRACT(XMLType_instance, XPath_string [, namespace_string ])
返回类型
返回 XMLType 数据类型。
参数解释
| 字段 | 说明 |
|---|---|
| XMLType_instance | 指定 XMLType 类型的数据,可以是 XMLType 列或者返回类型为 XMLType 的表达式。 |
| XPath_string | 指定需要搜索节点的 Xpath。 |
| namespace_string | 指定 XML 命名空间。 |
示例
DROP TABLE xml_test;
CREATE TABLE xml_test (id NUMBER, c1 XMLType);
INSERT INTO xml_test VALUES (1, '<a>aaa</a>');
INSERT INTO xml_test VALUES (2, '<a><b>aaa</b><b>bbb</b></a>');
INSERT INTO xml_test VALUES (3, '<a a1="a1">aaa</a>');
INSERT INTO xml_test VALUES (4, '<a><b b1="b1" b2="b2">bbb</b></a>');
INSERT INTO xml_test VALUES (5, '<a><b b1="b1" b2="b2">bbb1</b><b b1="b1" b2="b2">bbb2</b></a>');
INSERT INTO xml_test VALUES (6, '<a xmlns="ns1" xmlns:f="ns2"><f:b b1="b1" b2="b2">bbb1</f:b><b b1="b1" b2="b2">bbb2</b></a>');
obclient> SELECT EXTRACT(c1, '/a/f:b', 'xmlns="ns1" xmlns:f="ns2"') as RES
FROM xml_test WHERE id = 6;
+----------------------------------+
| RES |
+----------------------------------+
| <f:b b1="b1" b2="b2">bbb1</f:b>
|
+----------------------------------+
1 row in set
obclient> SELECT EXTRACT(c1, '/a/h:b/text()', 'xmlns="ns1" xmlns:h="ns2"') as RES FROM xml_test WHERE id = 6;
+------+
| RES |
+------+
| bbb1 |
+------+
1 row in set