亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > SQL Server > 正文

SQL2008 詳解直接將XML存入到SQL中

2024-08-31 01:04:35
字體:
來源:轉載
供稿:網友

一、前言

從 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”:

CREATE TABLE docs (pk INT PRIMARY KEY, xCol XML not null)

XML類型除了在表中使用,還可以在存儲過程、事務、函數等中出現。下面我們來完成我們對XML操作的第一步,使用SQL語句定義一個XML類型的數據,并為它賦值:

set @xmlDoc='<?xml version="1.0" ?>    <books>       <book id="0001"><title>C Program</title><author>David</author><price>21</price> </book> <book id="0002"><title>你必須知道的.NET</title><author>王濤</author><price>79</price> </book>  </books>'select @xmlDoc 

三、XML字段注意點

三、XML字段注意點

  • SQL Server 中以 Unicode(UTF-16) 來存儲 XML 數據。
  • XML 字段最多可存儲 2G 的數據。
  • 可以像插入字符串一樣向 XML 字段寫入內容。
  • 當在 xml 數據類型實例中存儲 XML 數據時,不會保留 XML 聲明(如 <?xml version='1.0'?>)。
  • 插入的 xml 內容的屬性的順序可能會與原 xml 實例的順序變化。
  • 不保留屬性值前后的單引號和雙引號。
  • 不保留命名空間前綴。
  • 可以對 XML 字段中的 XML 內容建立索引。
  • 可以對 XML 字段中的 XML 內容建立約束,比如 age 節點必須大于等于 18。
  • 可以通過創建架構來對 XML 進行類型化,比如讓 xml 內容的 <user> 節點下面必須有 <fullname> 節點。

四、查詢操作

在定義了一個XML類型的數據之后,我們最常用的就是查詢操作,下面我們來介紹如何使用SQL語句來進行查詢操作的。

          在T-Sql中,提供了兩個對XML類型數據進行查詢的函數,分別是query(xquery)和value(xquery, dataType),其中,query(xquery)得到的是帶有標簽的數據,而value(xquery, dataType)得到的則是標簽的內容。接下類我們分別使用這兩個函數來進行查詢。

1、使用query(xquery) 查詢

我們需要得到書的標題(title),使用query(xquery)來進行查詢,查詢語句為:

select @xmlDoc.query('(books/book/title)[1]')

運行結果如圖:

SQL2008,詳解直接將XML存入到SQL中,直接將XML存入到SQL中詳解

2、使用value(xquery, dataType) 查詢

同樣是得到書的標題,使用value函數,需要指明兩個參數,一個為xquery, 另一個為得到數據的類型??聪旅娴牟樵冋Z句:

select @xmlDoc.value('(books/book/title)[1]', 'nvarchar(max)')

運行結果如圖:

 SQL2008,詳解直接將XML存入到SQL中,直接將XML存入到SQL中詳解

3、查詢屬性值

無論是使用query還是value,都可以很容易的得到一個節點的某個屬性值,例如,我們很希望得到book節點的id,我們這里使用value方法進行查詢,語句為:

select @xmlDoc.value('(books/book/@id)[1]', 'nvarchar(max)')

運行結果如圖:

SQL2008,詳解直接將XML存入到SQL中,直接將XML存入到SQL中詳解

4、使用xpath進行查詢

xpath是.net平臺下支持的,統一的Xml查詢語句。使用XPath可以方便的得到想要的節點,而不用使用where語句。例如,

--得到id為0002的book節點

select @xmlDoc.query('(/books/book[@id="0002"])')

上面的語句可以獨立運行,它得到的是id為0002的節點。運行結果如下

SQL2008,詳解直接將XML存入到SQL中,直接將XML存入到SQL中詳解

五、修改操作

         SQL的修改操作包括更新和刪除。SQL提供了modify()方法,實現對Xml的修改操作。modify方法的參數為XML修改語言。XML修改語言類似于SQL 的Insert、Delete、UpDate,但并不一樣。

1、修改節點值

我們希望將id為0001的書的價錢(price)修改為100, 我們就可以使用modify方法。代碼如下:

set @xmlDoc.modify('replace value of (/books/book[@id=0001]/price/text())[1] with "100"')

--得到id為0001的book節點

select @xmlDoc.query('(/books/book[@id="0001"])')

注意:modify方法必須出現在set的后面。運行結果如圖:

 SQL2008,詳解直接將XML存入到SQL中,直接將XML存入到SQL中詳解

2、刪除節點

接下來我們來刪除id為0002的節點,代碼如下:

--刪除節點id為0002的book節點

set @xmlDoc.modify('delete /books/book[@id=0002]')

select @xmlDoc

運行結果如圖:

SQL2008,詳解直接將XML存入到SQL中,直接將XML存入到SQL中詳解

3、添加節點

很多時候,我們還需要向xml里面添加節點,這個時候我們一樣需要使用modify方法。下面我們就向id為0001的book節點中添加一個ISBN節點,代碼如下:

--添加節點

set @xmlDoc.modify('insert <isbn>78-596-134</isbn> before (/books/book[@id=0001]/price)[1]')select @xmlDoc.query('(/books/book[@id="0001"]/isbn)')

運行結果如圖:

SQL2008,詳解直接將XML存入到SQL中,直接將XML存入到SQL中詳解

4、添加和刪除屬性

當你學會對節點的操作以后,你會發現,很多時候,我們需要對節點進行操作。這個時候我們依然使用modify方法,例如,向id為0001的book節點中添加一個date屬性,用來存儲出版時間。代碼如下:

--添加屬性

set @xmlDoc.modify('insert attribute date{"2008-11-27"} into (/books/book[@id=0001])[1]')select @xmlDoc.query('(/books/book[@id="0001"])')

運行結果如圖:

SQL2008,詳解直接將XML存入到SQL中,直接將XML存入到SQL中詳解

如果你想同時向一個節點添加多個屬性,你可以使用一個屬性的集合來實現,屬性的集合可以寫成:(attribute date{"2008-11-27"}, attribute year{"2008"}),你還可以添加更多。這里就不再舉例了。

5、刪除屬性

刪除一個屬性,例如刪除id為0001 的book節點的id屬性,我們可以使用如下代碼:

--刪除屬性

set @xmlDoc.modify('delete books/book[@id="0001"]/@id')select @xmlDoc.query('(/books/book)[1]')

運行結果如圖:

SQL2008,詳解直接將XML存入到SQL中,直接將XML存入到SQL中詳解

6、修改屬性

修改屬性值也是很常用的,例如把id為0001的book節點的id屬性修改為0005,我們可以使用如下代碼:

--修改屬性

set @xmlDoc.modify('replace value of ( books/book[@id="0001"]/@id)[1] with "0005"')select @xmlDoc.query('(/books/book)[1]')

運行結果如圖:

SQL2008,詳解直接將XML存入到SQL中,直接將XML存入到SQL中詳解

經過上面的學習,相信你已經可以很好的在SQL中使用Xml類型了,下面是我們沒有提到的:exist()方法,用來判斷指定的節點是否存在,返回值為true或false; nodes()方法,用來把一組由一個查詢返回的節點轉換成一個類似于結果集的表中的一組記錄行。 你可以去MSDN查閱  http://msdn.microsoft.com/zh-cn/library/ms190798.aspx。

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!


注:相關教程知識閱讀請移步到MSSQL教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品成久久久久三级| 欧美在线一级视频| 亚洲国产女人aaa毛片在线| 欧美日韩另类字幕中文| 一区国产精品视频| 日韩欧美国产骚| 国产亚洲精品91在线| 欧美视频一二三| 欧美大肥婆大肥bbbbb| 欧美成人一区在线| 国产女同一区二区| 狠狠综合久久av一区二区小说| 日韩一区在线视频| 一本色道久久88精品综合| 欧美日韩国产在线| 一区二区三区www| 精品国产乱码久久久久久天美| 久久91精品国产91久久久| 日韩美女视频在线观看| 在线看日韩欧美| 国产91精品高潮白浆喷水| 国产成人自拍视频在线观看| 日本最新高清不卡中文字幕| 97视频网站入口| 久久婷婷国产麻豆91天堂| 国产婷婷97碰碰久久人人蜜臀| 一区二区三区www| 欧美激情高清视频| 亚洲第一网站男人都懂| 国产亚洲精品久久久久久牛牛| 久久久久久网址| 少妇高潮久久久久久潘金莲| 精品久久久久久久久久久| 97国产真实伦对白精彩视频8| 日韩欧亚中文在线| 国产精品永久免费在线| 亚洲激情视频在线观看| 亚洲女人天堂视频| 亚洲综合小说区| 久久精品中文字幕免费mv| 欧美另类99xxxxx| 欧美视频中文字幕在线| 国产91在线播放| 国产精品色悠悠| 91精品国产乱码久久久久久久久| 2025国产精品视频| 亚洲丁香婷深爱综合| 日韩精品中文字幕在线观看| 日本sm极度另类视频| 亚洲区一区二区| 激情成人在线视频| 日本成人在线视频网址| 亚洲欧美国产va在线影院| 久久人体大胆视频| 欧美另类在线播放| 午夜免费久久久久| 亚洲欧美精品一区| 色黄久久久久久| 欧美黄色成人网| 日韩成人在线免费观看| 欧美中文在线观看国产| 欧美日韩国产黄| 日韩视频免费在线观看| 性欧美在线看片a免费观看| 久久九九热免费视频| 992tv成人免费视频| 夜夜嗨av色一区二区不卡| 日韩精品999| 1769国内精品视频在线播放| 日韩在线免费高清视频| 亚洲一区二区三区四区视频| 中文字幕一精品亚洲无线一区| 精品久久久久久中文字幕一区奶水| 91精品视频网站| 国产精品福利无圣光在线一区| 亚洲天堂色网站| 精品国产福利在线| 亚洲成人a**站| 亚洲第一精品自拍| 81精品国产乱码久久久久久| 黑人巨大精品欧美一区二区三区| 成人中文字幕+乱码+中文字幕| 91大神在线播放精品| 欧美日韩免费观看中文| 青青在线视频一区二区三区| 亚洲小视频在线| 亚洲少妇激情视频| 成人免费看吃奶视频网站| 精品视频在线播放色网色视频| 欧美另类高清videos| 成人做爰www免费看视频网站| 91麻豆国产语对白在线观看| 性夜试看影院91社区| 国产欧美日韩精品在线观看| 欧美一级黄色网| 久热精品视频在线观看一区| 日本精品久久久| 亚洲欧洲在线视频| 欧美激情成人在线视频| 91网在线免费观看| 亚洲天堂av高清| 日韩欧美一区二区三区久久| 日韩欧美精品免费在线| 国产精品一区二区三区久久久| 久久免费精品日本久久中文字幕| 国产精品99久久99久久久二8| 日韩电影大全免费观看2023年上| 久久人人爽亚洲精品天堂| 欧美裸体视频网站| 欧美黑人性猛交| 欧美日韩午夜剧场| zzjj国产精品一区二区| 精品福利在线看| 欧美亚洲国产另类| 久久伊人精品视频| 91国产美女在线观看| 国产精品国模在线| 午夜精品视频在线| 亚洲色图av在线| 亚洲成人中文字幕| 国产精品一区二区久久久久| 亚洲精品久久久久久久久久久久| 久久婷婷国产麻豆91天堂| 国产亚洲欧美日韩美女| 自拍亚洲一区欧美另类| 欧美日韩国产在线看| 亚洲国产精品久久91精品| 精品国产一区二区三区四区在线观看| 精品国产一区二区三区在线观看| 亚洲国产精品va在线看黑人动漫| 亚洲精品98久久久久久中文字幕| 欧美激情在线视频二区| 久久久久久久一| 91国产美女在线观看| 日韩亚洲欧美中文在线| 国产一区二区三区三区在线观看| 欧美成人手机在线| 中文字幕日本欧美| 97热精品视频官网| 精品国产区一区二区三区在线观看| 欧美激情在线视频二区| 国产精品日韩电影| 欧美视频免费在线| 姬川优奈aav一区二区| 亚洲精品欧美一区二区三区| 97人洗澡人人免费公开视频碰碰碰| 亚洲图片欧美午夜| 亚洲色图偷窥自拍| 亚洲精品国产精品国自产观看浪潮| 92福利视频午夜1000合集在线观看| 国产成人精品久久亚洲高清不卡| 亚洲一级免费视频| 国模精品视频一区二区| 国产不卡av在线免费观看| 亚洲天堂开心观看| 久久综合免费视频| 日韩免费观看av| 久久琪琪电影院| 日韩最新av在线| 成人高清视频观看www| 欧美中文字幕精品| 国语自产偷拍精品视频偷| 国产一区二区丝袜高跟鞋图片| 欧美国产欧美亚洲国产日韩mv天天看完整|