从SQL Server查询返回oneliner

时间:2011-11-27 11:16:41

标签: sql sql-server

我使用此代码在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
)

1 个答案:

答案 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)