Comment puis-je utiliser une instruction de CAS dans une clause where avec EST NULLE?
Voici mes questions, ils ne travaillent pas, mais je veux faire quelque chose comme ceci :
SELECT a_field FROM a_table
WHERE
...
AND
CASE
WHEN a_value_from_another_query IS NULL THEN a_second_field IS NULL
ELSE a_second_field = a_value_from_another_query
END
Ou
SELECT a_field FROM a_table
WHERE
...
AND
CASE a_value_from_another_query
WHEN NULL THEN a_second_field IS NULL
ELSE a_second_field = a_value_from_another_query
END
Ou
SELECT a_field FROM a_table
WHERE
...
AND
CASE NVL(a_value_from_another_query, 'x')
WHEN 'x' THEN a_second_field IS NULL
ELSE a_second_field = a_value_from_another_query
END
Quand a_value_from_another_query IS NULL
, je veux ajouter a_second_field IS NULL
à ma clause where, quand a_value_from_another_query IS NOT NULL
, je veux ajouter a_second_field = a_value_from_another_query
à ma clause where. Comment puis-je y parvenir ?
Vous allez avoir à clarifier votre pensée - et puis re-expliquer. Vous pouvez utiliser un
Afficher plus de la requête si vous voulez une réponse sur la façon d'accomplir conditionnelle critères de jointure.
c'est ce que j'ai utilisé dans mon premier exemple.
Tu veux dire
CASE expr WHEN value THEN ...
notation, ou vous pouvez utiliser CASE WHEN expr THEN ...
, mais votre simple CASE WHEN NULL THEN
notation ne sera jamais évaluer le ENSUITE parce que la valeur NULL sera toujours évaluer à l'INCONNU, pas VRAI.CASE WHEN field IS NULL ...
Afficher plus de la requête si vous voulez une réponse sur la façon d'accomplir conditionnelle critères de jointure.
c'est ce que j'ai utilisé dans mon premier exemple.
Tu veux dire
WHERE (field is null) OR (a_second_field = a_value_from_another_query)
?OriginalL'auteur codea | 2011-07-29
Vous devez vous connecter pour publier un commentaire.
Sonne comme vous avez simplement pris le mauvais outil de la boîte à outils.
À moins que j'ai horriblement mal compris, les éléments suivants:
... devraient donc ce que vous voulez.
OriginalL'auteur staticsan
Il y a deux façons d'utiliser une instruction de CAS:
Dans vos sélections, vous utilisez à la place une autre expression. Ce n'est pas d'aller travailler.
Si vous souhaitez obtenir votre requête, vous devez utiliser le premier cas, l'expression, et de retourner une valeur, quelque chose comme ceci:
OriginalL'auteur Aitor