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