好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > SQL2008 詳解直接將XML存入到SQL中

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

熱門標簽:電銷需要外呼系統嗎 安卡拉地圖標注app 400電話辦理泰安 互聯網電話外呼系統 電話機器人怎么代理商 千呼電話機器人可以試用嗎 家庭農場地圖標注名稱怎樣起名 零成本地圖標注賺錢 我要地圖標注數量有限制嗎

一、前言

從 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]')

運行結果如圖:

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

同樣是得到書的標題,使用value函數,需要指明兩個參數,一個為xquery, 另一個為得到數據的類型。看下面的查詢語句:

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

運行結果如圖:

 

3、查詢屬性值

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

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

運行結果如圖:

4、使用xpath進行查詢

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

--得到id為0002的book節點

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

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

五、修改操作

         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的后面。運行結果如圖:

 

2、刪除節點

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

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

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

select @xmlDoc

運行結果如圖:

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)')

運行結果如圖:

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"])')

運行結果如圖:

如果你想同時向一個節點添加多個屬性,你可以使用一個屬性的集合來實現,屬性的集合可以寫成:(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]')

運行結果如圖:

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]')

運行結果如圖:

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

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

您可能感興趣的文章:
  • 卸載SQL2008遇到問題(重啟計算機失敗、找不到SQL卸載程序)的解決辦法
  • sql2008安裝教程 SQL Server 2008 R2 安裝圖解
  • SQL2005、SQL2008允許遠程連接的配置說明(附配置圖)
  • sql2008 hql語句翻譯過來的分頁語句介紹
  • SQLServer日志清空語句(sql2000,sql2005,sql2008)
  • SQL2008 附加數據庫提示 5120錯誤 解決辦法
  • 使用Sqlserver事務發布實現數據同步(sql2008)
  • sql2008評估期已過的解決辦法及序列號
  • sql2008安裝后服務器改名造成名稱不一致解決方法
  • mssql2008 自定義表類型實現(批量插入或者修改)
  • SQL2008 附加數據庫提示5120錯誤解決方法

標簽:文山 濱州 來賓 東營 大同 新鄉 黃山 池州

巨人網絡通訊聲明:本文標題《SQL2008 詳解直接將XML存入到SQL中》,本文關鍵詞  SQL2008,詳解,直接,將,XML,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《SQL2008 詳解直接將XML存入到SQL中》相關的同類信息!
  • 本頁收集關于SQL2008 詳解直接將XML存入到SQL中的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 一区二区三区在线精品| 日本不卡不码高清免费观看| 孝感市| 哺乳喂奶一级A片| 60老妇性xxxxhd| Japanese高潮喷水抽搐| 亚洲????XXXX3d| 女人被男人免费播放网站| 台湾真军巜逍遥双枪| 《甜性涩爱》未删减| 欧美成人久久一级c片免费 | 在厨房被C到高潮A片漫画免费看| 爽到无码高潮喷水aV无码网站| 中文字幕国产日韩| 日本在线视频播放| 女人自慰免费观看A片| 欧美一级做a爰片免费视频| 逼逼的视频| 一二三四视频在线观看电影8| 女人扒开腿秘?免费网站| 日本人成人片无码视频| 日本高清色WWW在线观看视频 | 日本欧美一区二区三区在线观看 | 成人免费观看一区二区| 师生h| 最近中文字幕无吗免费版| 女仆扒开双腿让主人调教游戏| 免费无码又爽又刺激又污又黄 | 老少亂伦一区二区三区| 91久久偷偷做嫩草影院电影| 美女吸乳羞羞在线观看| 我在上课他在下添的好爽| 色欲98AⅤ蜜臀aV欧美| 偷看邻居做爰过程| 辣文小说阅读| 湿水要紧奶高h| 女摸男生小丁视频| 夜晚睡不着想看点害羞的| 男人边摸边吃奶边做视频叫床| 欧美色国产精品中精品| 被教官按在寝室狂c到腿软漫画 |