Функция типа Implode в SQL Server 2000?
Есть ли функция типа Implode для SQL Server?
У меня есть список (в таблице SQL-сервера):
Apple
Orange
Pear
Blueberry
и я хочу, чтобы они вышли как
Apple, Orange, Pear, Blueberry
Я надеюсь, что пространство и запятая будут настраиваться, но я всегда могу заменить его, если он не...
Быстрая помощь будет оценена!
Ответы
Ответ 1
Есть несколько вопросов, связанных с этим уже в SO (поиск PIVOT или UNPIVOT или GROUP_CONCAT), но простое решение для SQL Server (с использованием трюка с конкатенацией переменных) для вашей заявленной проблемы:
DECLARE @str AS varchar(MAX)
DECLARE @separator AS varchar(50)
SET @separator = ', ' -- Here your configurable version
SELECT @str = COALESCE(@str + @separator, '') + <column_name>
FROM <table_name>
ORDER BY <sort_order>
Конечно, если это необходимо для каждой строки, вы можете использовать UDF или действительно классный FOR XML трюк
Ответ 2
Я обычно использую метод FOR XML PATH для этого, он также работает для подзапросов строк, просто
SELECT ', ' + <column_name>
FROM <table_name>
ORDER BY <sort_order>
FOR XML PATH('')
Это даст вам список с "," в начале и самым быстрым способом удалить это
это использовать материал
SELECT STUFF((
SELECT ', ' + <column_name>
FROM <table_name>
ORDER BY <sort_order>
FOR XML PATH('')
),1,2,'')