ОБЪЕДИНЯЯ пустые поля - PullRequest
59 голосов
/ 24 июня 2009

У меня есть таблица с тремя полями: FirstName, LastName и Email.

Вот несколько фиктивных данных:

FirstName | LastName | Email
Adam        West       adam@west.com
Joe         Schmoe     NULL

Теперь, если я сделаю:

SELECT CONCAT(FirstName, LastName, Email) as Vitals FROM MEMBERS

Виталий для Джо - ноль, так как есть одно нулевое поле. Как вы преодолеваете это поведение? Кроме того, это поведение по умолчанию в MS SQL Server?

Ответы [ 11 ]

0 голосов
/ 24 марта 2015

Наблюдая за ответами на этот вопрос, вы можете объединить их все в одно простое решение

CONCAT_WS(',',
IF(NULLIF(FirstName, '') IS NULL, NULL, FirstName),
IF(NULLIF(LastName, '') IS NULL, NULL, usr_lastname),
IF(NULLIF(Email, '') IS NULL, NULL, Email))

Итак, , короче говоря, мы используем CONCAT_WS, чтобы объединить наши поля и отделить их с помощью ,; и обратите внимание, что NULL полей и EMPTY не будут объединены

NULLIF проверит, является ли поле NULL или EMPTY, поле, содержащее только пробелы или также пустое, например: '', ''), и результат будет NULL или NOT NULL

IF Устанавливает поле, если оно не NULL или EMPTY

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...