SQL Server. Трансформация таблицы в строку

Время чтения - 1 мин.Дата публикации 10.09.2021 (обновлено 25.10.2023)

Функция 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)

Как получить текущего юзера БД

Как хранить в 1 поле таблицы БД значения разных типов?

Генерация MD5 в SQL Server

Как привести телефон в нормализованный вид

Дополнительный заработок для разработчиков на T-SQL

Прямая работа с заказчиками как ИП или самозанятый. Нужно знать только SQL и HTML.
Falcon Space - платформа для создания сайтов с личными кабинетами
В 2-3 раза экономнее и быстрее, чем заказная разработка
Более гибкая, чем коробочные решения и облачные сервисы
Используйте готовые решения и изменяйте под свои потребности
Запрос расчета стоимости веб-проекта на базе Falcon Space
Если видео Youtube плохо грузится, то попробуйте найти видео в ВК видео на канале Falcon Space
Сайт использует Cookie, Яндекс Метрику. Используя сайт, вы соглашаетесь с правилами сайта. См. Правила конфиденциальности и Правила использования сайта OK