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

时间:2011-01-12 16:02:17

标签: sql-server

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

1
2
3

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

3 个答案:

答案 0 :(得分:6)

我已成功使用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

答案 1 :(得分:4)

COALESCE是这样做的好方法

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

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

print @Out

答案 2 :(得分:4)

select stuff( (select ',' + YourColumn
               from YourTable
               for xml path('')), 1, 1, '')

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