Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从SQL Server查询返回oneliner_Sql_Sql Server - Fatal编程技术网

从SQL Server查询返回oneliner

从SQL Server查询返回oneliner,sql,sql-server,Sql,Sql Server,在SQLServer2008中,我使用此代码将多行作为一行返回。它工作得很好,返回用划分的数字。但当只有一行要返回时也是如此,然后我真的不需要完全不显示。这同样适用于拥有用于最后一个值。在不影响此查询性能的情况下修复它的最佳方法是什么 SELECT ( SELECT [KontaktyWartosc] + '; ' FROM [PodmiotyKontakty] INNER JOIN [Klienci] ON [PodmiotyKontakty].[Po

在SQLServer2008中,我使用此代码将多行作为一行返回。它工作得很好,返回用
划分的数字。但当只有一行要返回时也是如此,然后我真的不需要
完全不显示。这同样适用于拥有
用于最后一个值。在不影响此查询性能的情况下修复它的最佳方法是什么

SELECT (        
    SELECT [KontaktyWartosc] + '; '  FROM [PodmiotyKontakty]
    INNER JOIN [Klienci]
    ON [PodmiotyKontakty].[PodmiotID] = [Klienci].[PodmiotID] 
    WHERE [KlienciID] = @idKlienta AND
    FOR XML PATH('')) AS CONTENT
)

只需颠倒连接顺序并使用
子字符串

8000避免了额外的
LEN
,您也可以对
(max)
类型使用2000000000

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)