Auswahl  

 

Oracle
PL/SQL:SQL
12.1, 12.2
PL/SQL , SQL
12.12.18
MP
12.12.18
MP

Body

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;