в операторе SQL SELECT: условное удаление оператора запятой из поля - PullRequest
1 голос
/ 14 декабря 2011

У меня есть оператор выбора типа

SELECT 'Name' = customer_fname+ ', ' + customer_lname FROM customers

Его выходной сигнал подобен:

peter, willson
jenny, Mark

Теперь, если customer_fname равно null, вывод будет:

, willson
    , Mark

Если customer_lname имеет значение null, то:

 peter, 
    jenny,

И если как customer_fname, так и customer_lname имеют значение null, то будет отображаться только запятая.

Я хочу удалить запятую. Как мне это сделать?

Ответы [ 5 ]

2 голосов
/ 14 декабря 2011

Обычно я бы предложил использовать оператор ISNULL . Однако, поскольку вам нужно проверить оба поля, логика становится немного неприятной. Поэтому я бы предложил использовать оператор CASE .

SELECT CASE 
    WHEN first_name IS NULL AND last_name IS NULL THEN ''
    WHEN first_name IS NULL AND last_name IS NOT NULL THEN last_name
    WHEN first_name IS NOT NULL AND last_name IS NULL THEN first_name
    ELSE last_name + ', ' + first_name
END 
FROM customers

РЕДАКТИРОВАТЬ Для dknaack - решение ISNULL:)

SELECT ISNULL(last_name + ', ' + first_name, 
           ISNULL(last_name, 
               ISNULL(first_name, '')))
FROM Customers
0 голосов
/ 14 декабря 2011

осторожно со значениями NULL с оператором [+]: если вы не установите параметр базы данных CONCAT_NULL_YIELDS_NULL в OFF,

NULL + 'любая ненулевая строка' возвращает NULL, не пустую строку

SELECT ISNULL(customer_fname,'')+ ISNULL(', '+ customer_lname,'') [Name]
FROM customers
0 голосов
/ 14 декабря 2011

Вы можете использовать case-функцию в SQL Server:

SELECT 'Name' = customer_fname+ case when customer_fname is not null then ','  + customer_lname FROM customers
0 голосов
/ 14 декабря 2011

Пожалуйста, используйте ниже запрос: спасибо

SELECT 'Name' =  
        (CASE WHEN customer_fname IS NULL OR customer_lname IS NULL THEN (customer_fname + ' ' + customer_lname )
            ELSE customer_fname+ ', ' + customer_lname END)
         FROM customers
0 голосов
/ 14 декабря 2011

Вы должны использовать оператор CASE и функцию ISNULL.

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