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 语句就可以这样写:
```sqlSELECT
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 语句就可以这样写:
```sqlSELECT 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 语句就可以这样写:
```sqlSELECT
extract(xmldoc_column, '/table/data/string[@attname = "Name"]') FROM table_name;
综上所述,Oracle 提供的XML的功能可以很方便地查询XML数据,主要有以下方法:XMLQuery 、XMLTable 、XMLType,使用工具方式不同,查询XML数据就可以轻松解决,提高工作效率。