2016-01-15 22 views
2

用下面的SQL:防止自閉合標籤通過SQL Sever的

DECLARE @xml XML= 
(
    SELECT 
     N'' AS [content1/\*] 
    , N'' AS [content2/\*] 
    FOR XML PATH('Rows') 
) 

SELECT @xml 

我得到自我結束標記,如:

<Rows> 
    <content1 /> 
    <content2 /> 
</Rows> 

是否有可能獲得此相反,以在HTML中使用?

<Rows> 
    <content1></content1> 
    <content2></content2> 
</Rows> 

另外,是否有以下可能,即沒有根節點?

<content1></content1> 
<content2></content2> 
+0

試用**無根節點**'SELECT '' AS [內容1], '' AS [內容2] FOR XML PATH('')' –

回答

5

您可以使用TYPE directive避免隱式轉換爲字符串,返回XML:

DECLARE @xml XML= 
    (SELECT N'' as [content1], 
      N'' as [content2] 
    FOR XML PATH('Rows'), TYPE); 

SELECT @xml; 

LiveDemo

輸出:

<Rows><content1></content1><content2></content2></Rows> 

,如果它是可能的嗎?

<content1></content1> 
<content2></content2> 

表示沒有根節點。

DECLARE @xml XML= 
    (SELECT N'' as [content1], N'' as [content2] FOR XML PATH(''), TYPE); 

SELECT @xml; 

LiveDemo2

輸出:

<content1></content1><content2></content2> 
1
SELECT '' as content1 , '' as content2 FOR XML PATH('Rows') 

SELECT '' as content1 , '' as content2 FOR XML PATH('') 
+0

當您嘗試將結果賦給@xml變量時,它有什麼幫助? ** [演示](https://data.stackexchange.com/stackoverflow/query/424102)** – lad2025