数据库 查询XML XQuery

时间:2021-07-15 08:09:48

XQuery

用来从XML数据类型的字段抽取数据的语言称为XQuery.

举例:

首先,新建一个数据库:

数据库 查询XML XQuery

在表中插入数据:

INSERT INTO [XMLStudy].[dbo].[PurchaseOrders]
([PurchaseID]
,[PurchaseOrder])
VALUES
(2,
'<?xml version="1.0" encoding="utf-8" ?>
<about>
<template name="My Style"
author="Discuz!NT"
createdate = "2008-5-27"
ver="2.5"
fordntver="2.5"
copyright="Copyright 2008 Comsenz Inc." />
</about>'
)
GO

 

INSERT INTO [XMLStudy].[dbo].[PurchaseOrders]
([PurchaseID]
,[PurchaseOrder])
VALUES
(1,
'<about>
<template name="beijing2008"
author="Discuz!NT"
createdate="2008-7-2"
ver="2.5" fordntver="2.5"
copyright="Copyright 2008 Comsenz Inc." />
</about>'
)
GO

 

接下来介绍如何使用 XPath表达式来抽取订单的信息。

SELECT PurchaseOrder.query('/about') as Result from PurchaseOrders

 

查询结果就是 PurchaseOrder列中 “about”直接的内容。

数据库 查询XML XQuery

当然,还可以查询下一个结点的内容:

SELECT PurchaseOrder.query('/about/template') as Result from PurchaseOrders

数据库 查询XML XQuery

为了进一步的获取具体的内容,可以使用下面的SQL语句:

SELECT PurchaseOrder.query('/about/template/author/text()') as Result from PurchaseOrders
查询 没有结果,空白!
这个是因为 XML 需要是这个的。
<template name="beijing2008" >      <author>Discuz!NT</author>      <createdate>"2008-7-2" </createdate>      <ver>"2.5" </ver>      <fordntver>"2.5"</fordntver>      <copyright>"Copyright 2008 Comsenz Inc."</copyright>      </template>

再次查询:

数据库 查询XML XQuery

从上面的语句中可以看到,使用不同的 XPath表达式,获得了XML中不同节点的内容,Xpath指定了查询的路径,其中text()函数是Xpath函数,返回包含在XML元素中的值。

 

XQUERY还可以结合where 使用!!!