Wie kann ich mit einer CASE-Anweisung eine WHERE-Klausel mit NULL IST?

Hier meine Fragen, Sie arbeiten nicht, aber ich wollen, so etwas zu tun :

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

Oder

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

Oder

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

Wenn a_value_from_another_query IS NULL möchte ich noch hinzufügen a_second_field IS NULL um meine WHERE-Klausel, wenn a_value_from_another_query IS NOT NULL möchte ich noch hinzufügen a_second_field = a_value_from_another_query um meine WHERE-Klausel. Wie kann ich das erreichen ?

Sie gehen zu müssen, um zu klären, Ihr denken - und dann neu zu erklären. Sie können eine CASE expr WHEN value THEN ... notation verwenden, oder Sie können CASE WHEN expr THEN ..., aber Ihre einfache CASE WHEN NULL THEN notation wird nie bewerten, da Sie NULL wird stets zu UNKNOWN ausgewertet, nicht WAHR.
CASE WHEN field IS NULL ...
Post mehr von der Abfrage, wenn Sie wollen, eine Antwort auf die Frage, wie das zu erreichen conditional join-Kriterien.
dies ist, was ich in meinem ersten Beispiel.
Du meinst WHERE (field is null) OR (a_second_field = a_value_from_another_query)?

InformationsquelleAutor codea | 2011-07-29

Schreibe einen Kommentar