Случай в запросе выбора в sql - PullRequest
0 голосов
/ 02 февраля 2019

Ниже приведен мой SQL с оператором case.

select 
    a.AssociationClubNumber,
    case a.AssociationClubNumber
        when NULL then 'NA'
        when '' then 'NA'
        else a.AssociationClubNumber
    end as 'AssociationClubNumber'
from 
    [dbo].[Customer] a

Если a.AssociationClubNumber равно NULL или "", то CASE должно возвращать строку "NA".

Я пробовал несколько разных комбинаций, но почему-то это не выполняется.

Ответы [ 3 ]

0 голосов
/ 02 февраля 2019

удалить одиночную кавычку из псевдонима и использовать is null

 select a.AssociationClubNumber,
    Case a.AssociationClubNumber
    When is NULL THEN  'NA'  
    WHEN  '' then  'NA'
    ELSE a.AssociationClubNumber
    END  as AssociationClubNumber_val
    from [dbo].[Customer] a
0 голосов
/ 02 февраля 2019

CASE [value] WHEN NULL THEN END никогда не будет оцениваться как истина.Вы должны использовать CASE WHEN [value] IS NULL THEN 1 END.

Для того, что у вас есть, я бы использовал:

ISNULL(NULLIF(AssociationClubNumber,'')'NA')
0 голосов
/ 02 февраля 2019

Используйте другую форму case - с явными сравнениями:

select c.AssociationClubNumber,
       (case when c.AssociationClubNumber is null or 
                  c.AssociationClubNumber = ''
             then 'NA'
             else c.AssociationClubNumber
        end)  as new_AssociationClubNumber
from [dbo].[Customer] c;

Вы используете простую case.Даже в простой форме NULL никогда не может совпадать - в основном потому, что = не работает с NULL.

Также обратите внимание:

  • Я исправил псевдоним таблицыпоэтому имеет смысл (как сокращение таблицы), а не произвольная буква.
  • Я изменил псевдоним столбца, чтобы два возвращаемых столбца были разными.
  • Я удалил одинарные кавычки вокруг столбцапсевдоним.Используйте только одинарные кавычки для строковых и констант даты.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...