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
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
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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Klingt wie Sie nahm einfach das falsche Werkzeug aus der toolbox.
Es sei denn, ich habe schrecklich missverstanden Sie, die folgenden:
... sollte so was Sie wollen.
InformationsquelleAutor staticsan
Gibt es zwei Möglichkeiten, verwenden Sie eine CASE-Anweisung:
In der Ihr wählt, verwenden Sie stattdessen ein Ergebnis, einen anderen Ausdruck. Das ist nicht zur Arbeit gehen.
Wenn Sie möchten, um Ihre Abfrage zu arbeiten, müssen Sie auf die erste case-Ausdruck, und geben einen Wert zurück, so etwas wie dieses:
InformationsquelleAutor Aitor