Sql Server XML
實驗數據:
Create table xmldata (name NVARCHAR(20),age int,sex NVARCHAR(5) )INSERT INTO xmldata VALUES (N'張三',12,N'男'), (N'李四',12,N'女'), (N'王五',12,N'男')SELECT * FROM xmldata?表數據轉換XML
FOR XML PATH --把表數據轉換成XML數據--將數據存入屬性中 SELECT name AS '@c1',age AS '@c2',sex AS '@c3' FROM xmldata FOR XML PATH('XMLRow') , root('XMLData') --PATH('XMLRow')定義行標簽名稱 , root('XMData')定義根標簽名稱,定義屬性名稱要加單引號和@?
?
--將數據存入節點中 SELECT name AS c1,age AS c2,sex AS c3 FROM xmldata FOR XML PATH('XMLRow') , ROOT('XMLData') --字段別稱定義數據節點的名稱解析XML數據?
1、xml: ? ? ? ?能認識元素、屬性和值
? ??
2、xpath: ? ?尋址語言,類似windows目錄的查找(沒用過dir命令的話就去面壁)
? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? 語法格式,這些語法可以組合為條件:
? ? ? ? ? ? ? ? "."表示自己,".."表示父親,"/"表示兒子,"//"表示后代,
? ? ? ? ? ? ? ? "name"表示按名字查找,"@name"表示按屬性查找
? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? "集合[條件]" 表示根據條件取集合的子集,條件可以是
? ? ? ? ? ? ? ? ? ? 數 ?值:數字,last(),last()-數字 等
? ? ? ? ? ? ? ? ? ? 布爾值:position()<數字,@name='條件',name='條件'
? ? ? ? ? ? ? ? 條件是布爾值的時候可以合并計算:and or
? ??
3、xquery: ? ?基于xpath標的準查詢語言,sqlserver xquery包含如下函數
? ? ? ? ? ? ? ? exist(xpath條件):返回布爾值表示節點是否存在
? ? ? ? ? ? ? ? query(xpath條件):返回由符合條件的節點組成的新的xml文檔
? ? ? ? ? ? ? ? value(xpath條件,數據類型):返回指定的標量值,xpath條件結果必須唯一
? ? ? ? ? ? ? ? nodes(xpath條件): 返回由符合條件的節點組成的一行一列的結果表
?
declare @data xml set @data=' <bookstore> <book category="COOKING"><title lang="en">Everyday Italian</title><author>Giada De Laurentiis</author><year>2005</year><price>30.00</price> </book> <book category="CHILDREN"><title lang="jp">Harry Potter</title><author>J K. Rowling</author><year>2005</year><price>29.99</price> </book> <book category="WEB"><title lang="en">XQuery Kick Start</title><author>James McGovern</author><author>Per Bothner</author><author>Kurt Cagle</author><author>James Linn</author><author>Vaidyanathan Nagarajan</author><year>2003</year><price>49.99</price> </book> <book category="WEB"><title lang="cn">Learning XML</title><author>Erik T. Ray</author><year>2003</year><price>39.95</price> </book> </bookstore> 'SELECT T.C.value('@category','varchar(max)') as category, T.C.value('title[1]','varchar(max)') as title, T.C.value('title[1]/@lang','varchar(max)') as lang, T.C.value('author[1]','varchar(max)') as author, T.C.value('author[2]','varchar(max)') as author1 FROM @data.nodes('/bookstore/book') as T(C)?
?
轉載于:https://www.cnblogs.com/JinweiChang/p/10461785.html
總結
以上是生活随笔為你收集整理的Sql Server XML的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 腾讯地图和百度地图的PHP相互转换
- 下一篇: 第四课:PHP 变量