Undokumentierte Funktion zum Abfragen von NULL Werten

03.
Oktober
2007
Veröffentlicht von: Marco Patzwahl

Haben wir uns nicht alle schon mal darüber geärgert, dass auf NULL

Spalten nur mit der folgenden Klausel abgefragt werden kann:

Haben wir uns nicht alle schon mal darüber geärgert, dass auf NULL

Spalten nur mit der folgenden Klausel abgefragt werden kann:

SELECT * FROM tab WHERE col IS NULL;

Seit Version 10g gibt es eine undokumentierte Funktion (und damit ist sie

leider auf Produktionsdatenbanken nur auf eigene Gefahr einsetzbar).

Die Funktion sys_op_map_nonnull kann zwei NULL Spalten vergleichen.

Beispiel: Alle Zeilen sollen ausgegeben werden, in denen die Spalte

mgr=comm= NULL ist:

select * from scott.emp
where sys_op_map_nonnull(mgr)=sys_op_map_nonnull(comm)

Oder, alle Zeilen ausgeben, deren Spalte COMM = NULL ist:

select * from scott.emp
where sys_op_map_nonnull(comm)=sys_op_map_nonnull(NULL);

Zum Vergleich: Die offizielle Klausel lautet:

select * from scott.emp
where comm is NULL;

Jede Menge Know-how für Sie!

In unserer Know-How Datenbank finden Sie mehr als 300 ausführliche Beiträge zu den Oracle-Themen wie DBA, SQL, PL/SQL, APEX und vielem mehr.
Hier erhalten Sie Antworten auf Ihre Fragen.