Оператор CASE с NULL и NOT NULL

12

Есть ли лучший способ написать строки ниже в SQL Server 2005?

CASE
WHEN (ID IS NULL)
   THEN 'YES'
WHEN (ID IS NOT NULL)
   THEN 'NO'
END AS ID_Value,
Джон Сайгель
источник
3
Определите «лучше».
Уэсли
Я не знаком с MSSQL, но если в MySQL есть что-то вроде IF-функции, вы можете написать такой код:IF(ID IS NULL, 'YES', 'NO') AS ID_Value
Kondybas
1
В SQL Server 2012 есть, IIFно вопрос помечен как 2005.
Мартин Смит,
Вы должны быть в состоянии сделать это с помощью заявления ниже. isnull(nullif(isnull(ID,'Y'),ID),'N')
Джейсон Камберленд
1
@ Bappy1988 Почему это будет лучше, чем ответ Джея?
Дезсо

Ответы:

16

Ты пробовал:

CASE WHEN (ID IS NULL) THEN 'YES' ELSE 'NO' END AS ID_Value,

У меня есть доступ только к 2008 году, но я надеюсь, что этот синтаксис все еще будет работать в 2005 году ( кажется, что-то, что будет частью первоначального определения CASE).


источник
Да, я пытался, CASE WHEN (ID IS NULL) THEN 'YES' ELSE 'NO' END AS ID_Valueно я ищу какой-то другой лучший подход, как IF(ID IS NULL, 'YES', 'NO') AS ID_Valueв Ms Sql, чтобы все могло быть в одной строке. Любые предложения, пожалуйста
7
Этот ответ в одной строке. Если вы хотите, вы можете поместить все утверждение в одну строку.
ypercubeᵀᴹ