XPath search and element index : XML query « XML « SQL Server / T-SQL Tutorial






3>
4> CREATE TABLE dbo.ProductBilling
5> (ProductBillingID int IDENTITY(1,1) PRIMARY KEY,
6> ProductBillingXML XML NOT NULL)
7> GO
1>
2> INSERT dbo.ProductBilling(ProductBillingXML)
3> VALUES ('<ProductBilling Billingnumber="1" customerid="22" orderdate="7/1/2005">
4~ <OrderItems>
5~ <Item id="22" qty="1" name="SQL"/>
6~ <Item id="24" qty="1" name="T-SQL"/>
7~ </OrderItems>
8~ </ProductBilling>')
9> GO

(1 rows affected)
1> INSERT dbo.ProductBilling
2> (ProductBillingXML)
3> VALUES ('<ProductBilling Billingnumber="1" customerid="40" orderdate="7/11/2005">
4~ <OrderItems>
5~ <Item id="11" qty="1" name="Notes"/>
6~ </OrderItems>
7~ </ProductBilling>')
8> GO

(1 rows affected)
1> INSERT dbo.ProductBilling
2> (ProductBillingXML)
3> VALUES ('<ProductBilling Billingnumber="1" customerid="9" orderdate="7/22/2005">
4~ <OrderItems>
5~ <Item id="11" qty="1" name="SQL Notes"/>
6~ <Item id="24" qty="1" name="T-SQL Notes"/>
7~ </OrderItems>
8~ </ProductBilling>')
9> GO

(1 rows affected)
1>
2> set quoted_identifier on
3>
4> SELECT DISTINCT
5> ProductBillingXML.value
6> ('(/ProductBilling/OrderItems/Item/@name)[1]', 'varchar(30)') as BookTitles
7> FROM dbo.ProductBilling
8> UNION
9> SELECT DISTINCT
10> ProductBillingXML.value
11> ('(/ProductBilling/OrderItems/Item/@name)[2]', 'varchar(30)')
12> FROM dbo.ProductBilling
13> GO
BookTitles
------------------------------
NULL
Notes
SQL
SQL Notes
T-SQL
T-SQL Notes

(6 rows affected)
1>
2> set quoted_identifier off
3>
4> drop table dbo.ProductBilling
5> GO








24.4.XML query
24.4.1.XML query on XML column
24.4.2.XPath query on XML
24.4.3.SELECT @ProductBillingXML.query('/ProductBilling/OrderItems/Item')
24.4.4.Retrieve XML data using XPath
24.4.5.XPath search and element index