18句話入門SQLServer XML
/*
sql xml 入門:
--by jinjazz
--http://blog.csdn.net/jinjazz
1、xml: 能認識元素、屬性和值
2、xpath: 定址語言,類似windows目錄的查詢(沒用過dir命令的話就去面壁)
語法格式,這些語法可以組合為條件:
"."表示自己,".."表示父親,"/"表示兒子,"//"表示後代,
"name"表示按名字查詢,"@name"表示按屬性查詢
"集合[條件]"
表示根據條件取集合的子集,條件可以是
數 值:數字,last(),last()-數字 等
布林值:position() 條件是布林值的時候可以合併計算:and or
3、xquery:
基於xpath標的準查詢語言,sqlserver xquery包含如下函式
exist(xpath條件):返回布林值表示節點是否存在
query(xpath條件):返回由符合條件的節點組成的新的xml文件
value(xpath條件,資料型別):返回指定的標量值,xpath條件結果必須唯一
nodes(xpath條件):
返回由符合條件的節點組成的一行一列的結果表
*/
declare @ data xml
set @ data = '
'
--測試語句,如果不理解語法請參考上面的xpath規則和xquery函式說明
--1、文件
select @ data
--2、任意級別是否存在price節點
select @ data . exist ('//price' )
--3、獲取所有book節點
select @ data .
query ('//book' )
--4、獲取所有包含lang屬性的節點
select @ data . query ('//*[@lang]'
)
--5、獲取第一個book節點
select @ data . query ('//book[1]' )
--6、獲取前兩個book節點
select @ data . query ('//book[position()<=2]' )
--7、獲取最後一個book節點
select @ data . query ('//book[last()]' )
--8、獲取price>35的所有book節點
select @ data . query ('//book[price>35]'
)
--9、獲取category="WEB"的所有book節點
select @ data . query
('//book[@category="WEB"]' )
--10、獲取title的lang="en"的所有book節點
select @
data . query ('//book/title[@lang="en"]' )
--11、獲取title的lang="en"且
price>35的所有book節點
select @ data . query ('//book[./title[@lang="en"] or
price>35 ]' )
--12、獲取title的lang="en"且 price>35的第一book的(第一個)title
select @ data . query ('//book[./title[@lang="en"] and price>35 ]' ).
value ('(book/title)[1]' , 'varchar(max)' )
--13、等價於10
select @ data .
value ('(//book[./title[@lang="en"] and price>35 ]/title)[1]' ,
'varchar(max)' )
--14、獲取title的lang="en"且 price>35的第一book的(第一個)title的lang屬性
select @ data . value ('((//book[@category="WEB" and price>35
]/title)[1]/@lang)[1]' , 'varchar(max)' )
--15、獲取第一本書的title
select Tab .
Col . value ('(book/title)[1]' , 'varchar(max)' ) as title
from @ data .
nodes ('bookstore' )as Tab (Col )
--16、獲取每本書的第一個author
select Tab . Col .
value ('author[1]' , 'varchar(max)' ) as title
from @ data . nodes
('//book' )as Tab (Col )
--17、獲取所有book的所有資訊
select
T . C . value
('title[1]' , 'varchar(max)' ) as title ,
T . C . value ('year[1]' , 'int' )
as year ,
T . C . value ('title[1]' , 'varchar(max)' )as title ,
T . C .
value ('price[1]' , 'float' ) as price ,
T . C . value ('author[1]' ,
'varchar(max)' ) as author1 ,
T . C . value ('author[2]' , 'varchar(max)' )
as author2 ,
T . C . value ('author[3]' , 'varchar(max)' ) as author3 ,
T . C . value ('author[4]' , 'varchar(max)' ) as author4
from @ data .
nodes ('//book' ) as T (C )
--18、獲取不是日語(lang!="jp")且價格大於35的書的所有資訊
select
T . C . value ('title[1]' , 'varchar(max)' ) as title ,
T . C . value
('year[1]' , 'int' ) as year ,
T . C . value ('title[1]' , 'varchar(max)'
)as title ,
T . C . value ('price[1]' , 'float' ) as price ,
T . C .
value ('author[1]' , 'varchar(max)' ) as author1 ,
T . C . value
('author[2]' , 'varchar(max)' ) as author2 ,
T . C . value ('author[3]' ,
'varchar(max)' ) as author3 ,
T . C . value ('author[4]' , 'varchar(max)' )
as author4
from @ data . nodes ('//book[./title[@lang!="jp"] and price>35
]' ) as T (C )
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16436858/viewspace-617454/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- XML入門指南(18)XML行為(轉)XML
- 一句話入門SEO
- SAP一句話入門:Material Management
- SAP一句話入門:Project SystemProject
- SAP一句話入門:Plant MaintenanceAINaN
- SAP一句話入門:Production Planning
- SAP一句話入門:Sales and Distribution
- XML入門XML
- sqlServer 基礎入門SQLServer
- XML入門指南(4)XML元素(轉)XML
- XML入門指南(15)XML編碼(轉)XML
- XML入門指南(6)XML確認(轉)XML
- XML入門指南(3)XML語法(轉)XML
- XML入門指南(1)XML簡介(轉)XML
- SAP一句話入門:Production Planning 寫的太猛了
- XML入門指南(17)XML HTTP 請求(轉)XMLHTTP
- XML入門指南(7)XML瀏覽器(轉)XML瀏覽器
- 大白話Swift入門Swift
- RabbitMQ 入門 - 話題MQ
- SQLServer解析xml到OracleSQLServerXMLOracle
- Javaweb入門20160301 ---xml入門JavaWebXML
- XML入門指南(19)XML相關技術(轉)XML
- XML入門的小介紹XML
- XML-RPC入門 (轉)XMLRPC
- XML入門指南(8)使用CSS來顯示XML(轉)XMLCSS
- Sqlserver定位哪些物件和哪些會話哪些sql語句消耗了tempdbSQLServer物件會話
- 大話 資料入門
- SAP一句話入門:Finacial & Controlling Accounting
- xml--概述,快速入門,約束XML
- javaweb入門20160305---xml的解析入門JavaWebXML
- 18Oracle入門Oracle
- 入門MySQL——DML語句篇MySql
- XML從入門到深入(超詳細)XML
- javascript快速入門24--XML基礎JavaScriptXML
- android 入門xml佈局檔案AndroidXML
- VS2005入門之XMLXML
- XML入門常見問題(3)(轉)XML
- XML入門常見問題(2)(轉)XML