2012-05-16 38 views
0

可能重複:
help with FOR XML PATH('') escaping 「special」 characters爲什麼SQL顯示一個&爲&?

我需要一些幫助,我的查詢是以下:

STUFF(
    (
     SELECT ',' + CountDesc 
     FROM Count INNER JOIN ProjectCount ON Count.Id = ProjectCount.CountId 
     WHERE ProjectCount.ProjectId = Project.Id ORDER BY Count.CountDesc 
     FOR XML PATH('') 
    ), 1, 1, '') as [Country] 

會發生什麼事,當我運行此查詢和伯爵表有是其中一個字段爲&,它將&顯示爲&

反正有沒有讓這發生?

在此先感謝。

+0

謝謝,我在那篇文章中找到了答案! – johnnie

回答

2

除了在一些特殊情況下(例如在註釋或CDATA部分中),XML規範的每個Section 2.4必須轉義,&。如果&未顯示爲&,則XML將無效。

2

這是因爲在XML語句中組合的字符串正在使用XML特定字符。除了&之外,還會影響<和>以及其他字符。

我通常解決這個問題做了呼叫後替換:

select @str = replace(@str, '&amp;', '&') 

和築巢的其他字符的內容替換。

相關問題