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 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