Please enable Javascript to correctly display the contents on Dot Net Tricks!
 
Become an Expert in C#, .NET, MVC, JAVA, PHP, AngularJS, Hadoop, Android, iphone, Testing etc.
by Joining our Training Programs and Take Your Career to the Next Level! To know more make a call on +91 98 71 749695

SQL Server XQuery Methods

Posted By : Shailendra Chauhan, 11 Jan 2012
Updated On : 14 Jul 2012
Total Views : 117,011   
 
Keywords : Xml methods, XQuery methods, xml exist, xml modify, xml query, xml nodes, xml value pdf

Sql Server provides xquery methods to query xml file or xml data. Using these methods we can Insert, Update, Delete data in xml file or in XML Data Type variable. In Sql Server XQuery statements are case sensitive since xml is case sensitive. Hence while query to xml data remember this thing.

XQuery Methods

we have following xml data to implement all the XQuery methods given below.

  1. xml.exist()

    This method returns a boolean value depends upon the condition in this method like as

     SELECT @xml.exist('/Suppliers/User[@Email = "[email protected]"]') as Result1
    SELECT @xml.exist('/Suppliers/User[@Email = "[email protected]"]') as Result2 
  2. xml.query()

    This method takes an XQuery statement and returns an instance of the XML data type like as

     SELECT @xml.query('/Suppliers/User') as Users 
     SELECT @xml.query('distinct-values( data(/Suppliers/User/Item/@No))') as Items 
  3. xml.value()

    This method takes an XQuery statement and returns a single value after type casting like as

     SELECT @xml.value('/Suppliers[1]/User[1]/@Email', 'VARCHAR(20)') as ResultEmail1
    SELECT @xml.value('/Suppliers[1]/User[2]/@Email', 'VARCHAR(20)') as ResultEmail2 
  4. xml.nodes()

    This method takes an XQuery statement and returns a single value after type casting like as

     SELECT x.value('@UserNo', 'int') AS UserNo, x.value('@Email', 'varchar(50)') AS Email
    FROM @xml.nodes('/Suppliers/User') TempXML (x)
     SELECT x.value('../@UserNo', 'int') AS UserNo, x.value('../@Email', 'varchar(50)') AS Email, x.value('@Name', 'varchar(50)') AS ItemName
    FROM @xml.nodes('/Suppliers/User/Item') TempXML (x)
  5. xml.modify()

    This method takes an XQuery statement and modify the xml data like as

     --Insert node in the end of XML 
    SET @xml.modify ('insert  as last into (/Suppliers)[1]')
    SELECT @xml;
     --Update node in xml
    DECLARE @UserNo int =120
    SET @xml.modify ('replace value of (/Suppliers/User/@UserNo)[1] with sql:variable("@UserNo")')
    SELECT @xml;
     --Update node in xml conditionally
    SET @xml.modify(' replace value of (/Suppliers/User/@UserNo)[1] with ( if (count(/Suppliers/User[1]/Item) > 2) then "3.0" else "1.0" ) ')
    SELECT @xml;
     --Delete node in xml SET @xml.modify(' delete Suppliers/User/Item[@No=1]')
    SELECT @xml;
     --Delete node in xml depends on condition
    DECLARE @ItemNo int=1
    SET @xml.modify(' delete Suppliers/User/Item[@No=sql:variable("@ItemNo")]')
    SELECT @xml;
Summary

In this article I try to explain the Sql Server XQuery methods with example. I hope after reading this article you will be able to query xml in Sql Server. I would like to have feedback from my blog readers. Please post your feedback, question, or comments about this article.

 
Further Reading
 
About the Author
Hey! I'm Shailendra Chauhan full-time author, consultant & trainer. I have more than 6 years of hand over Microsoft .NET technologies and other web technologies like JavaScript, AngularJS, NodeJS etc. I am an entrepreneur, the founder & chief editor of www.dotnet-tricks.com and www.dotnettricks.com. I am author of most popular e-books for technical Interview on ASP.NET MVC Interview Questions and Answers & AngularJS Interview Questions and Answers & LINQ Interview Questions and Answers.
I have delivered 100+ training sessions to professional world-wide over Microsoft .NET technologies such C#, ASP.NET MVC, WCF, Entity Framework and other mobile technologies such Ionic, PhoneGap, Corodva. Read more...
 
Free Interview Books
 
SUBSCRIBE & FOLLOW US
 
Browse By Category
 
 
Like us on Facebook