Oracle中查询XML数据的方法(oracle查询xml)

Oracle 提供的XML的功能可以很方便地查询XML数据,本文重点分享介绍了查询XML数据的方法,主要有以下方法:

XMLQuery 、XMLTable 、XMLType

其中XMLQuery和XMLType都是通过XPath解析XML数据,而XMLTable 则是把XML文档当作一个表格来使用,将其解析成表格形式。

#### 一、XMLQuery方法

XMLQuery 方法,我们可以通过XPath提取XML节点中的内容, 返回值类型可以是XML,varchar2 ,clob等类型, 其格式为:

“`sql

SELECT

XMLQuery(xpath_string

returning datatype[optional])

FROM table_name;


举个例子: 一个无名称的XML文档,我们想从中提取姓名,
以上XML文档的XPath表达式为”/table/data/string[@attname = ‘Name’]”,那么查询SQL 语句就可以这样写:
```sql
SELECT
xmlquery('/table/data/string[@attname = "Name"]'
returning content)
FROM table_name;

#### 二、XMLTable方法

XMLTable 方法可以把XML文档看作一个二维表格,并且可以指定XPath查询字段,返回的就是一个Oracle 表格的结果集,其格式为:

“`sql

SELECT column_name

FROM xml_table (xpath_string

passing xml_column

columns column_name,)


举个例子: 一个无名称的XML文档,我们想从中提取姓名和電子郵件,
XML文档的XPath表达式为
”/table/data/string[@attname = ‘Name’]”
以及 ”/table/data/string[@attname = ‘E-Mail’]”,
那么查询SQL 语句就可以这样写:

```sql
SELECT name, email
FROM xml_table ( '/table/data/string[@attname = "Name"]'
passing xml_column
columns name CLOB PATH 'string[@attname = "Name"]',
email CLOB PATH 'string[@attname = "E-Mail"]'
)

#### 三、XMLType方法

XMLType 方法只需要把XML文档存储到XMLType列中,然后就可以通过XMLType自带的函数EXTRACT来查询XML 数据,而不需要像XMLQuery和XMLTable一样要求用户构造XPath表达式,其格式为:

“`sql

SELECT

extract(xmldoc_column, xpath_string)

FROM table_name;


举个例子: 一个无名称的XML文档,我们想从中提取姓名,
可以使用 extract 函数,那么查询SQL 语句就可以这样写:
```sql
SELECT
extract(xmldoc_column, '/table/data/string[@attname = "Name"]')
FROM table_name;

综上所述,Oracle 提供的XML的功能可以很方便地查询XML数据,主要有以下方法:XMLQuery 、XMLTable 、XMLType,使用工具方式不同,查询XML数据就可以轻松解决,提高工作效率。


数据运维技术 » Oracle中查询XML数据的方法(oracle查询xml)