for XML path 使用技巧


FOR XML PATH 是sqlserver數據庫的語法,能將查詢出的數據轉換成xml格式的數據.

首先,我們來看一個正常的查詢:

SELECT TOP 2 id, name,crDate FROM sys.sysobjects  

 

查詢出的是表格形式數據, 如果改成xml格式,則如下

 SELECT TOP 2 id, name,crDate FROM sys.sysobjects FOR XML PATH('')   

 

 查詢xml格式的數據.並且都是拼接到一個字段中.

我們還可以給xml的node自定義名稱,滿足業務需求

 

SELECT TOP 2   id AS IDs,result=  name+xtype,crDate FROM sys.sysobjects FOR XML PATH('')   

 

 

path('')則是將每一行記錄包裹到一個節點中.名字就是括號內的文字.如下:

 

SELECT TOP 2 id, name,crDate FROM sys.sysobjects  FOR XML PATH('Row')   

 

同理, ...FOR XML PATH('')  和 FOR XML PATH 是相等的. 都是不會將一行記錄包裹到對應的節點中.

 

轉義的問題:

SELECT 'ab<&c'   

SELECT 'ab<&c' FOR XML PATH('')   

 

數據庫中的數據會有一些符號,比如 URL的 &連接符, <>符號等. FOR XML PATH 會將其轉義成 &amp; 之類的文字.導致 從數據庫取出的URL地址失效.如何讓FOR XML PATH 不要轉義?

如下:

select  (SELECT 'ab<&c'  FOR XML PATH(''),TYPE).value('.','NVARCHAR(MAX)')  

 

這樣就可以不轉義 for xml path 的查詢結果了

 

如何將多行數據合並到一行,並用分隔符隔開  

有時候需要獲取數據庫中的一些數據,將多個結果行合並到一個返回.

如下圖的數據

 

使用for xml path 返回都是xml格式的數據.頁面或者后台處理比較麻煩. 需要獲取簡單的字符串格式, 方法如下,只需要簡單的用字符串分隔符加+列名即可

 

SELECT TOP 10    ','+name  FROM sys.sysobjects  FOR XML PATH('')  


 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM