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
Une expression case
ne peut que manipuler la valeur d'une expression, pas supprimer les lignes du résultat. Si vous souhaitez omettre le null
s 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
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