如何将记录集转换为SQL Server中的分隔字符串

Mat*_*iel 4 sql-server

有没有办法转换单列记录集,如

1
2
3
Run Code Online (Sandbox Code Playgroud)

在SQL Server中输入'1,2,3'字符串?

TKT*_*KTS 7

我已成功使用Coalesce创建一个函数,如下所示.然后,您可以在select语句中使用该函数来获取分隔的字符串.(您可以根据需要向函数添加参数并在coalesce select语句中使用它们.)

CREATE FUNCTION [dbo].[fn_MyFunction]
(
)
RETURNS NVARCHAR(MAX)
AS
BEGIN

    DECLARE @str NVARCHAR(MAX)

    DECLARE @Delimiter CHAR(2) 
    SET @Delimiter = ', '

    SELECT @str = COALESCE(@str + @Delimiter,'') + AColumn
    FROM dbo.myTable

    RETURN RTRIM(LTRIM(@str))

END
Run Code Online (Sandbox Code Playgroud)


Joe*_*lli 6

select stuff( (select ',' + YourColumn
               from YourTable
               for xml path('')), 1, 1, '')
Run Code Online (Sandbox Code Playgroud)

注意: stuff 函数只是从结果字符串中删除第一个逗号。


Jas*_*son 5

COALESCE 是这样做的好方法

http://msdn.microsoft.com/en-us/library/ms190349.aspx

DECLARE @Out VARCHAR(2048)
Select @Out = COALESCE(@Out + ', ', '') + [YourColumn] from YourTable

print @Out
Run Code Online (Sandbox Code Playgroud)