Как преобразовать набор записей в строку с разделителями в SQL Server - PullRequest
4 голосов
/ 12 января 2011

Есть ли способ преобразования набора записей из одного столбца, такого как

1
2
3

, в строку «1,2,3» в SQL Server?

Ответы [ 3 ]

7 голосов
/ 12 января 2011

Я успешно создал функцию, используя Coalesce, как показано ниже. Затем вы можете использовать функцию в вашем операторе select для получения строки с разделителями. (Вы можете добавить параметры в свою функцию и использовать их в операторе выбора coalesce по мере необходимости.)

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
4 голосов
/ 12 января 2011
select stuff( (select ',' + YourColumn
               from YourTable
               for xml path('')), 1, 1, '')

Примечание. Функция stuff удаляет первую запятую из строки результата.

4 голосов
/ 12 января 2011

COALESCE - достойный способ сделать это

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

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

print @Out
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...