Copy Code code as follows: 
 
 
  
 
  
  
/*01. 
  
Introduction to 02.sql XML: 
  
--by Jinjazz 
  
--http://blog.csdn.net/jinjazz 
  
05. 
  
06.1, XML: Ability to recognize elements, attributes, and values 
  
07. 
  
08.2, XPath: Addressing language, lookup similar to Windows directory (go to the wall if you don't use the dir command) 
  
09. 
  
10. Syntax format, which can be combined as a condition: 
  
11. "." Express oneself, "..." Said the father, "/" said the Son, "//" to indicate the offspring, 
  
"Name" means find by First name, "@name" means find by property 
  
13. 
  
14. "Set [Condition]" indicates a subset of the collection based on the condition, which can be 
  
15. Value: Number, Last (), last ()-number, etc. 
  
16. Boolean value: Position () < number, @name = ' condition ', name= ' condition ' 
  
17. When the condition is a Boolean value can be combined: and OR 
  
18. 
  
19.3, XQuery: A quasi-query language based on an XPath label, SQL Server XQuery contains the following functions 
  
exist (XPath condition): Returns a Boolean value indicating whether a node exists 
  
Query (XPath condition): Returns a new XML document made up of qualified nodes 
  
Value (XPath condition, data type): Returns the specified scalar value, the XPath condition result must be unique 
  
Nodes (XPath condition): Returns the result table of a row of rows consisting of qualified nodes 
  
24.*/ 
  
 
 
 
  
 
 
  
  Copy Code code as follows: 
 
 
  
 
 
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> 
 
 
 
 
--Test statements, if you do not understand the syntax, refer to the XPath rules above and the XQuery function description 
 
--1, Documentation 
Select @data 
--2, any level presence of the price node 
Select @data. exist ('//price ') 
--3, get all book nodes 
Select @data. Query ('//book ') 
--4, get all nodes that contain the lang attribute 
Select @data. Query ('//*[@lang] ') 
--5, getting the first book node 
Select @data. Query ('//book[1] ') 
--6, get top two book nodes 
Select @data. Query ('//book[position () <=2] ') 
--7, get last book node 
Select @data. Query ('//book[last ()] ') 
--8, get all book nodes for price>35 
Select @data. Query ('//book[price>35] ') 
--9, get all book nodes for category= "WEB" 
Select @data. Query ('//book[@category = WEB '] ') 
--10, get all book nodes of lang= "en" for title 
Select @data. Query ('//book/title[@lang = ' en '] ') 
--11, get title of lang= "en" and price>35 all book nodes 
Select @data. Query ('//book[./title[@lang = "en"] or price>35] 
--12, get the title of the Lang= "en" and price>35 the first book of the (first) title 
Select @data. Query ('//book[./title[@lang = "en"] and price>35]. Value (' (Book/title) [1] ', ' varchar (max) ') 
--13, equivalent to 12 
Select @data. Value (' (//book[./title[@lang = "en"] and price>35]/title) [1] ', ' varchar (max) ') 
--14, get the title of the Lang= "en" and price>35 first book of the (first) title of the lang attribute 
Select @data. Value ((//book[@category = "WEB" and price>35]/title) [1]/@lang] [1] ', ' varchar (max) ') 
--15, get the title of the first book 
Select Tab.Col.value (' (Book/title) [1] ', ' varchar (max) ') as Title 
From @data. Nodes (' bookstore ') as Tab (Col) 
--16, get the first author of each book 
Select Tab.Col.value (' author[1] ', ' varchar (max) ') as Title 
From @data. Nodes ('//book ') as Tab (Col) 
--17, get all the information for all 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, get all the information for a book that is not Japanese (lang!= "JP") and is more than 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)