#sql #sql-server
#sql #sql-сервер
Вопрос:
У меня есть столбцы
Col1|Col2|Col3
Aaaa|Bbbb|Cccc
Null|Bbbb|Cccc
Aaaa|Bbbb|Null
Мой результат должен выглядеть так
Aaaa,Bbbb,Cccc
Bbbb,Cccc
Aaaa,Bbbb
Я попробовал это с помощью обычного способа конкатенации ‘ ‘, например
Select Col1 ', ' Col2 ', ' Col3
но с помощью этого оператора я получаю Null в результирующем наборе, если в одном из столбцов есть Null. Я мог бы сделать что-то вроде
ISNULL(Col1, ' ')
но это приводит к тому, что знаки ‘,’ путаются
Кто-нибудь может мне здесь помочь?
Ответ №1:
Эта CONCAT()
функция решает вашу проблему:
Select CONCAT(Col1, ', ', Col2, ', ', Col3)
Он игнорирует NULL
значения.
Поддержка самых последних версий SQL Server CONCAT_WS()
:
CONCAT_WS(', ', col1, col2, col3)
Это приводит к несколько иным результатам. Например, если вторые два значения равны NULL
, то первое возвращает 'A,,'
значение, а второе возвращает 'A'
значение. Я не уверен, чего ты на самом деле хочешь.
Комментарии:
1. CONCAT_WS выполнил задание. Большое спасибо!