Оператор 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ᵀᴹ
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.