web-dev-qa-db-fra.com

Peut-on écrire une déclaration de cas sans avoir d'autre déclaration

J'ai cette requête:

select case when id=1 then 'A'
when id=2 then 'B'
end 
from test

Il me donne o/p comme

Id
UNE
B
NUL
NUL
NUL

Je ne veux pas avoir de valeurs NULL dans ma sortie, je veux seulement comparer en A et en B, est-ce possible dans une instruction case 

6
Red Devil

Une expression case ne peut que manipuler la valeur d'une expression, pas supprimer les lignes du résultat. Si vous souhaitez omettre le nulls du résultat, vous devrez ajouter une clause where:

SELECT CASE WHEN id = 1 THEN 'A'
            WHEN id = 2 THEN 'B'
       END 
FROM   test
WHERE  id IN (1, 2) -- HERE
6
Mureinik

Vous pouvez utiliser une clause WHERE pour restreindre la sortie.

SELECT CASE WHEN id=1 THEN 'A'
WHEN id=2 THEN 'B'
END 
FROM test
WHERE id IN (1,2)

Ou si vous souhaitez présenter une autre valeur au lieu de null, utilisez une partie else dans la déclaration CASE.

SELECT CASE WHEN id=1 THEN 'A'
WHEN id=2 THEN 'B' ELSE 'Invalid'
END 
FROM test
1
Unnikrishnan R