SQL Server數(shù)據(jù)庫(kù)之一個(gè) SQL 2005 XML 查詢的例子
此文章主要向大家講述的是SQL Server數(shù)據(jù)庫(kù)之一個(gè) SQL 2005 XML 查詢的例子,我們大家都知道SQL Server 2005 新增的一個(gè)特性主要是對(duì) XML 的支持的增強(qiáng),現(xiàn)在有很多的文章都在鼓吹 XML 是如何如何的有用,但慚愧的是我學(xué)習(xí)了好幾年的數(shù)據(jù)庫(kù)。
很少在實(shí)際應(yīng)用中觸碰過 XML,因?yàn)橛脩艉苌儆羞@方面的需求。最近用戶給了一段類似下面結(jié)。
SQL Server 2005 新增的一個(gè)特性是對(duì) XML 的支持的增強(qiáng),好多文章都在鼓吹 XML 是如何如何的有用,但慚愧的是我學(xué)習(xí)了好幾年的數(shù)據(jù)庫(kù),很少在實(shí)際應(yīng)用中觸碰過 XML,因?yàn)橛脩艉苌儆羞@方面的需求。最近用戶給了一段類似下面結(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 中編寫一個(gè)查詢,取出 excel id=1 時(shí)的 path & filename。這個(gè)需求提醒了我,XML 在數(shù)據(jù)庫(kù)中的一個(gè)常用需求就是取出 XML 節(jié)點(diǎn)中參數(shù)的值。
1. SQL 2005 XML 取出節(jié)點(diǎn)數(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é)點(diǎn)數(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é)點(diǎn)數(shù)據(jù)方法三。
該方法是方法二的改進(jìn),我們可以在 xml.value() 函數(shù)中使用 sql:variable() 來為 XML 節(jié)點(diǎn)中的 id 提供一個(gè)動(dòng)態(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
 
以上的相關(guān)內(nèi)容就是對(duì)SQL Server數(shù)據(jù)庫(kù)之一個(gè)SQL 2005 XML查詢例子的介紹,望你能有所收獲。
【編輯推薦】















 
 
 
 
 
 
 