我使用此代码在SQL Server 2008中将许多行作为一行返回。它运行良好并返回用;
分割的数字。但是当只有一行返回时,它也是如此,然后我根本不需要显示;
。同样适用于最后一个值;
。在不影响此查询性能的情况下,修复它的最佳方法是什么?
SELECT (
SELECT [KontaktyWartosc] + '; ' FROM [PodmiotyKontakty]
INNER JOIN [Klienci]
ON [PodmiotyKontakty].[PodmiotID] = [Klienci].[PodmiotID]
WHERE [KlienciID] = @idKlienta AND
FOR XML PATH('')) AS CONTENT
)
答案 0 :(得分:2)
只需颠倒连接的顺序并使用SUBSTRING
。
8000避免额外LEN
,您也可以使用2000000000 (max)
类型
SELECT
SUBSTRING (
(
SELECT '; ' + [KontaktyWartosc] FROM [PodmiotyKontakty]
INNER JOIN [Klienci]
ON [PodmiotyKontakty].[PodmiotID] = [Klienci].[PodmiotID]
WHERE [KlienciID] = @idKlienta AND
FOR XML PATH('')) AS CONTENT
), 3, 8000)