一、前言
從 SQL Server 2005 開始,就增加了 xml 字段類型,也就是說可以直接把 xml 內容存儲在該字段中,并且 SQL Server 會把它當作 xml 來對待,而不是當作 varchar 來對待。
隨著SQL Server 對XML字段的支持,相應的,T-SQL語句也提供了大量對XML操作的功能來配合SQL Server中XML字段的使用。本文主要說明如何使用SQL語句對XML進行操作。
二、定義XML字段
在進行數據庫的設計中,我們可以在表設計器中,很方便的將一個字段定義為XML類型。需要注意的是,XML字段不能用來作為主鍵或者索引鍵。同樣,我們也可以使用SQL語句來創建使用XML字段的數據表,下面的語句創建一個名為“docs”的表,該表帶有整型主鍵“pk”和非類型化的 XML 列“xCol”:
三、XML字段注意點
三、XML字段注意點
SQL Server 中以 Unicode(UTF-16) 來存儲 XML 數據。
XML 字段最多可存儲 2G 的數據。
可以像插入字符串一樣向 XML 字段寫入內容。
當在 xml 數據類型實例中存儲 XML 數據時,不會保留 XML 聲明(如 )。
插入的 xml 內容的屬性的順序可能會與原 xml 實例的順序變化。
不保留屬性值前后的單引號和雙引號。
不保留命名空間前綴。
可以對 XML 字段中的 XML 內容建立索引。
可以對 XML 字段中的 XML 內容建立約束,比如 age 節點必須大于等于 18。
可以通過創建架構來對 XML 進行類型化,比如讓 xml 內容的
四、查詢操作
在定義了一個XML類型的數據之后,我們最常用的就是查詢操作,下面我們來介紹如何使用SQL語句來進行查詢操作的。
在T-Sql中,提供了兩個對XML類型數據進行查詢的函數,分別是query(xquery)和value(xquery, dataType),其中,query(xquery)得到的是帶有標簽的數據,而value(xquery, dataType)得到的則是標簽的內容。接下類我們分別使用這兩個函數來進行查詢。
1、使用query(xquery) 查詢
我們需要得到書的標題(title),使用query(xquery)來進行查詢,查詢語句為:
4、使用xpath進行查詢
xpath是.net平臺下支持的,統一的Xml查詢語句。使用XPath可以方便的得到想要的節點,而不用使用where語句。例如,
--得到id為0002的book節點