SQL Server. Трансформация таблицы в строку
Функция as_agg позволяет быстро превратить табличные данные в единую строку, созданную путем конкатерации всех строк таблицы.
Создаем функцию:
Create or ALTER FUNCTION [dbo].[as_agg]
(
@t ExtendedDictionaryParameter readonly
)
RETURNS Nvarchar(max)
AS
BEGIN
declare @res nvarchar(max)
SELECT @res = STUFF(
(
SELECT COALESCE(value2, value, '')
FROM @t
FOR XML PATH(''), TYPE
).value('.','nvarchar(max)')
,1,0, ''
)
return @res
END
Используем ее:
declare @t ExtendedDictionaryParameter
insert @t (Value2)
select top 3 '' + code + '' from as_trace
select [dbo].[as_agg](@t)
Примечание:
1. Обработка корректно работает и для HTML разметки.
2. Используется стандартный тип для Falcon Space ExtendedDictionaryParameter, состоящий из Key, Value, Value2. В данном примере используется только поле Value2.
CREATE TYPE [dbo].[ExtendedDictionaryParameter] AS TABLE(
[Key] [nvarchar](32) NULL,
[Value] [nvarchar](512) NULL,
[Title] [nvarchar](1024) NULL,
[Value2] [nvarchar](max) NULL
)
GO
Альтернативный вариант - в запросе через STUFF:
set @temp = STUFF((
SELECT '<article class="bla-item card mb-3">'+name+'</article>'
FROM table1
FOR XML PATH(''), TYPE).value('.','nvarchar(max)') ,1,0, '')
Что еще посмотреть по SQL Server
Как запустить SQL сценарий сразу на нескольких БД
Индексы SQL Server. Поиск дубликатов
Запрос для получения SQL всех индексов для таблиц базы данных SQL Server
Как перестроить все индексы на базе SQL Server
Как разрезать строку на части в SQL по некоторому символу
Конвертация из строки в таблицу в SQL Server
Выполнение прямого запроса к URL из SQL
SQL Server Как установить у таблицы описание (MS Description)
Как получить текущего юзера БД
Дополнительный заработок для разработчиков на T-SQL
- Шаг 1. Создать концепт проекта
- Шаг 2. Получить оценку бюджета (КП)
- Шаг 3. Заключить договор
- Шаг 4. Создать совместно техническое задание
- Шаг 5. Поэтапная реализация проекта