SQL Server數(shù)據(jù)庫之一個 SQL 2005 XML 查詢的例子
此文章主要向大家講述的是SQL Server數(shù)據(jù)庫之一個 SQL 2005 XML 查詢的例子,我們大家都知道SQL Server 2005 新增的一個特性主要是對 XML 的支持的增強,現(xiàn)在有很多的文章都在鼓吹 XML 是如何如何的有用,但慚愧的是我學習了好幾年的數(shù)據(jù)庫。
很少在實際應用中觸碰過 XML,因為用戶很少有這方面的需求。最近用戶給了一段類似下面結(jié)。
SQL Server 2005 新增的一個特性是對 XML 的支持的增強,好多文章都在鼓吹 XML 是如何如何的有用,但慚愧的是我學習了好幾年的數(shù)據(jù)庫,很少在實際應用中觸碰過 XML,因為用戶很少有這方面的需求。最近用戶給了一段類似下面結(jié)構(gòu)的 XML。
- declare @xdoc xml
- set @xdoc = '<conn>
- <mysql servername="192.168.1.120,3306">
- <user name="root" password="" />
- <user name="dba" password="" />
- <user name="user" password="" />
- </mysql>
- <mssql servername="192.168.1.110,1433">
- <user name="sa" password="" />
- <user name="dba" password="" />
- <user name="user" password="" />
- </mssql>
- <excel id="1" path="c:\database\" filename="source1.xls" />
- <excel id="2" path="d:\database\" filename="source2.xls" />
- <excel id="3" path="e:\database\" filename="source3.xls" />
- </conn>
- '
具體的要求就是:在 SQL 2005 中編寫一個查詢,取出 excel id=1 時的 path & filename。這個需求提醒了我,XML 在數(shù)據(jù)庫中的一個常用需求就是取出 XML 節(jié)點中參數(shù)的值。
1. SQL 2005 XML 取出節(jié)點數(shù)據(jù)方法一。
- select excel_path = t.c.value('@path' ,'varchar(255)')
- ,excel_name = t.c.value('@filename' ,'varchar(255)')
- from @xdoc.nodes('/conn/excel') t (c)
- where t.c.value('@id', 'int') = 1
- excel_path excel_name
- c:\database\ source1.xls
2. SQL 2005 XML 取出節(jié)點數(shù)據(jù)方法二。
- select excel_path = @xdoc.value('(/conn/excel[@id="1"]/@path)[1]', 'varchar(255)')
- ,excel_name = @xdoc.value('(/conn/excel[@id="1"]/@filename)[1]', 'varchar(255)')
- excel_path excel_name
- c:\database\ source1.xls
3. SQL 2005 XML 取出節(jié)點數(shù)據(jù)方法三。
該方法是方法二的改進,我們可以在 xml.value() 函數(shù)中使用 sql:variable() 來為 XML 節(jié)點中的 id 提供一個動態(tài)的參數(shù)。
- declare @excel_id int
- set @excel_id = 1
- select excel_path = @xdoc.value('(/conn/excel[@id=sql:variable("@excel_id")]/@path)[1]', 'varchar(255)')
- ,excel_name = @xdoc.value('(/conn/excel[@id=sql:variable("@excel_id")]/@filename)[1]', 'varchar(255)')
- excel_path excel_name
- c:\database\ source1.xls
以上的相關內(nèi)容就是對SQL Server數(shù)據(jù)庫之一個SQL 2005 XML查詢例子的介紹,望你能有所收獲。
【編輯推薦】