我已經繼承了存儲過程,它使用子查詢中的FOR XML PATH將來自子查詢的多個結果行連接到「主要」查詢中的單個結果列。考慮以下內容,其中表「Z」是FROM子句主查詢的一部分:將多個結果行連接成單個結果而不使用FOR XML PATH
SELECT SUBSTRING((SELECT ('; ' + RTRIM(c.SomeField))
FROM a (NOLOCK)
INNER JOIN b (NOLOCK) ON a.aid = b.aid
INNER JOIN c (NOLOCK) ON b.cid = c.cid
WHERE a.zid = z.zid
FOR XML PATH('')), 3, 1000)
這將返回以下,如果有從子查詢3個結果行:
value1; value2; value3
大多數時間,這很好。然而,c.SomeField
的一些值是varchar,它們中有特殊的XML字符,最常見的是&符號。所以,當值中的一個具有符號,我得到這個:
value1 & more value1; value2; value3
有另一種方式我可以連接這些排結果放在一起?如果沒有,是否有一種簡單的方法來解碼.NET中的字符串?
不知道.value是什麼,但是這個效果很好!非常感謝你。 – 2010-08-23 13:34:35
@AJ:這個問題的標題說*「不使用FOR XML PATH」*。 – RedFilter 2010-08-23 13:48:28