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”直接的內容。
當然,還可以查詢下一個結點的內容:
SELECT PurchaseOrder.query('/about/template') as Result from PurchaseOrders
為了進一步的擷取具體的內容,可以使用下面的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>
重新查詢:
從上面的語句中可以看到,使用不同的 XPath運算式,獲得了XML中不同節點的內容,Xpath指定了查詢的路徑,其中text()函數是Xpath函數,返回包含在XML元素中的值。
XQUERY還可以結合where 使用!!!