Как объединить текст из нескольких строк в одну текстовую строку в SQL Server
Этот ответ может вернуть unexpected results. Для получения согласованных результатов используйте один из методов FOR XML PATH, подробно описанных в других ответах.
Используйте
COALESCE
:DECLARE @Names VARCHAR(8000) SELECT @Names = COALESCE(@Names + ', ', '') + Name FROM People
Просто некоторые csv пояснения (поскольку этот .csv ответ, кажется, получает .csv относительно обычные просмотры):
- Coalesce - это просто полезный чит, который выполняет две задачи:
1) Не group-concat нужно инициализировать
@Names
пустым sql строковым значением.2) Не sqlselect нужно удалять лишний разделитель mssql в конце.
- Приведенное выше решение даст неверные результаты, если строка имеет значение NULL Name (если есть NULL, NULL сделает
@Names
NULL после этой строки, и следующая строка снова будет начинаться как пустая строка. Легко исправить одним из двух решений:DECLARE @Names VARCHAR(8000) SELECT @Names = COALESCE(@Names + ', ', '') + Name FROM People WHERE Name IS NOT NULL
или:
DECLARE @Names VARCHAR(8000) SELECT @Names = COALESCE(@Names + ', ', '') + ISNULL(Name, 'N/A') FROM People
В зависимости sql-server от того, какое поведение sqlselect вы хотите (первый вариант string-concatenation просто отфильтровывает NULL, второй sql вариант сохраняет их в списке sqlselect с помощью маркерного сообщения ms-sql-server [замените 'N / A' на то, что sql-server подходит для вы]).
sql
sql-server
csv
string-concatenation
group-concat
Как объединить текст из нескольких строк в одну текстовую строку в SQL Server
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.