Instruction CASE avec IS NULL et NOT NULL

12

Existe-t-il un meilleur moyen d'écrire les lignes ci-dessous dans SQL Server 2005?

CASE
WHEN (ID IS NULL)
   THEN 'YES'
WHEN (ID IS NOT NULL)
   THEN 'NO'
END AS ID_Value,
Jon Seigel
la source
3
Définissez «mieux».
Wesley
Je ne connais pas MSSQL mais s'il a quelque chose comme la fonction IF dans MySQL, vous pouvez écrire un tel code:IF(ID IS NULL, 'YES', 'NO') AS ID_Value
Kondybas
1
SQL Server 2012 a IIFmais la question est balisée 2005.
Martin Smith
Vous devriez pouvoir accomplir cela avec la déclaration ci-dessous. isnull(nullif(isnull(ID,'Y'),ID),'N')
Jason Cumberland
1
@ Bappy1988 Pourquoi serait-ce mieux que la réponse de Jay?
dezso

Réponses:

16

As-tu essayé:

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

Je n'ai accès qu'à 2008 pour le moment, mais j'espère que cette syntaxe fonctionnera toujours en 2005 (cela semble faire partie de la définition originale de CASE).


la source
Oui - j'ai essayé CASE WHEN (ID IS NULL) THEN 'YES' ELSE 'NO' END AS ID_ValueMais je cherche une autre meilleure approche quelque chose comme IF(ID IS NULL, 'YES', 'NO') AS ID_Valuedans le Ms Sql, afin que tout puisse être sur une seule ligne. Toutes suggestions s'il vous plaît
7
Cette réponse est sur une seule ligne. Si vous le souhaitez, vous pouvez mettre l'intégralité de l'instruction sur une seule ligne.
ypercubeᵀᴹ