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