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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- sqlServer 基礎入門SQLServer
- 大白話Swift入門Swift
- RabbitMQ 入門 - 話題MQ
- xml--概述,快速入門,約束XML
- XML從入門到深入(超詳細)XML
- 大話 資料入門
- C# XML基礎入門(XML檔案內容增刪改查清)C#XML
- SVG XML 格式定義圖形入門介紹SVGXML
- SQLServer如何監控阻塞會話SQLServer會話
- SqlServer 匯入 MySqlServerMySql
- Maven快速入門(四)Maven中的pom.xml檔案詳解MavenXML
- MyBatis從入門到精通(二):MyBatis XML方式的基本用法之SelectMyBatisXML
- Spring Boot入門(七):使用MyBatis訪問MySql資料庫(xml方式)Spring BootMyBatisMySql資料庫XML
- SQLServer匯入大CSV檔案SQLServer
- HTML5入門教程 :Cookie會話跟蹤技術HTMLCookie會話
- 【機器學習】——白話入門及術語解釋機器學習
- JavaScript入門(4)確認(confirm訊息對話方塊)JavaScript
- MyBatis從入門到精通(三):MyBatis XML方式的基本用法之多表查詢MyBatisXML
- MyBatis從入門到精通(四):MyBatis XML方式的基本用法之增刪改MyBatisXML
- qt 寫入xml檔案例項QTXML
- MySQL load xml載入資料MySqlXML
- XML DOM 載入函式概述XML函式
- 入門入門入門 MySQL命名行MySql
- SQLServer匯出匯入資料到MySQLServerMySql
- http 請求-01-AJAX(Asynchronous JavaScript and XML)入門介紹, ajax 的優缺點HTTPJavaScriptXML
- 大話PM 談談產品入門的經典語錄
- 重新學習Mysql資料庫1:無廢話MySQL入門MySql資料庫
- 社群內 Go 入門指南的學習,白話精簡示例。Go
- SpringBoot—整合log4j2入門和log4j2.xml配置詳解Spring BootXML
- 把list集合的內容寫入到Xml中,通過XmlDocument方式寫入Xml檔案中XML
- 給程式設計入門者的嘮叨話(全棧路線)程式設計全棧
- 用Navicat把SQLServer資料匯入MySQLServerMySql
- 何入CTF的“門”?——所謂入門就是入門
- 如何入CTF的“門”?——所謂入門就是入門
- scala 從入門到入門+
- makefile從入門到入門
- gRPC(二)入門:Protobuf入門RPC
- 大白話說Python+Flask入門(六)Flask SQLAlchemy操作mysql資料庫PythonFlaskMySql資料庫
- 程式設計入門,這763位老程式設計師有話講!程式設計師