XQuery 語言參考 (Database Engine)

Transact-SQL 支援 XQuery 語言的子集,用於查詢 xml 資料類型。此 XQuery 實作是與 XQuery 的 July 2004 Working Draft 合作。該語言是由 World Wide Web Consortium (W3C) 以及所有主要資料庫廠商,還有 Microsoft 聯合開發。因為 W3C 規格可能會在成為 W3C 建議之前會歷經數次修改,所以此實行可能會跟最終的建議不同。此主題說明 SQL Server 支援之 XQuery 子集的語意及語法。

如需詳細資訊,請參閱 W3C XQuery 1.0 語言規格

XQuery 是可查詢結構化或半結構化 XML 資料的語言。利用 Database Engine 提供的 xml 資料類型支援,就可以在資料庫中儲存文件,然後使用 XQuery 進行查詢。

XQuery 是以現有的 XPath 查詢語言為基礎,加上額外支援以獲取更佳的反覆運算、更好的排序結果,以及建構必要 XML 的能力。XQuery 可在 XQuery 資料模型上運作。這是 XML 文件與已指定類型及不具類型之 XQuery 結果的摘要。類型資訊是以 W3C XML 結構描述語言提供的類型為依據。如果沒有類型資訊可用,XQuery 會將資料處理為不具類型。這與 XPath 1.0 版處理 XML 的方式相似。

若要查詢 xml 類型的變數或資料行中儲存的 XML 執行個體,您可以使用 xml 資料類型方法。例如,您可以宣告一個 xml 類型的變數,並使用 xml 資料類型的 query() 方法進行查詢。

DECLARE @x xml
SET @x = '<ROOT><a>111</a></ROOT>'
SELECT @x.query('/ROOT/a')

在以下範例中,該查詢是針對 AdventureWorks 資料庫的 ProductModel 資料表中,xml 類型的 Instructions 資料行而指定。

SELECT Instructions.query('declare namespace AWMI="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions";         
    /AWMI:root/AWMI:Location[@LocationID=10]
') as Result 
FROM  Production.ProductModel
WHERE ProductModelID=7

XQuery 包括命名空間宣告 declare namespaceAWMI=...,以及查詢運算式 /AWMI:root/AWMI:Location[@LocationID=10]。

請注意,XQuery 是針對 xml 類型的 Instructions 資料行而指定。xml 資料類型的 query() 方法 可用於指定 XQuery。

下表中所列的相關主題可以協助您了解如何在 Database Engine 實作 XQuery。

主題

描述

在 SQL Server 中實作 XML

說明 Database Engine 中 xml資料類型的支援,以及可對此資料類型使用的方法。xml 資料類型可形成 XQuery 運算式執行所在的輸入 XQuery 資料模型。

管理伺服器上的 XML 結構描述集合

描述如何指定資料庫中儲存之 XML 執行個體的類型。這代表您可以使 XML 結構描述集合與 xml 類型資料行產生關聯。資料行中儲存的所有執行個體,都是以集合中的結構描述進行驗證及指定類型,而且可為 XQuery 提供類型資訊。

在 AdventureWorks 資料庫中的 xml 資料類型表示法

說明 AdventureWorks 資料庫中的 xml 類型資料行,以及其中儲存的執行個體。大部分 XQuery 範例都是針對 AdventureWorks 資料庫,以及其中包含的 xml 類型資料行而撰寫。了解 XML 執行個體可協助您了解查詢。

[!附註]

本章節的組織是以 World Wide Web Consortium (W3C) XQuery Working Draft 規格為依據。本章節中提供的部分圖表即採自上述規格。本章節會比較 Microsoft XQuery 實作與 W3C 規格,描述 Microsoft XQuery 跟 W3C 的不同之處,以及指出不支援的 W3C 功能。您可以從 http://www.w3.org/TR/2004/WD-xquery-20040723 取得 W3C 規格。

本章節內容

主題

描述

XQuery 基本概念

提供 XQuery 概念,還有運算式評估 (靜態及動態內容)、不可部分完成、有效布林值、XQuery 類型系統、比對順序類型,以及錯誤處理的基本概觀。

XQuery 運算式

描述 XQuery 主要運算式、路徑運算式、順序運算式、算術比較及邏輯運算式、XQuery 建構、FLWOR 運算式、條件式及量化運算式,以及順序類型的不同運算式。

模組和初構 (XQuery)

描述 XQuery 初構。

針對 xml 資料類型的 XQuery 函數

描述可支援之 XQuery 函數的清單。

針對 xml 資料類型的 XQuery 運算子

描述可支援的 XQuery 運算式。

針對 xml 資料類型的其他範例 XQueries

提供其他 XQuery 範例。