Benutzer-Werkzeuge

Webseiten-Werkzeuge


prog:sql_nvl_functions

Umgang mit Null Funktionen in SQL

Für die Verarbeitung von NULL Values in SQL stehen bei Oracle zur Verfügung:

  • nvl - Ist der eigentliche Wert Parameter 1 Null, gebe den alternativen Wert Parameter 2 zurück
  • nvl2 - ist der zu prüfende Wert null geben Parameter 3 zurück, ansonsten Parameter 2
  • NULLIF - Sind beide Parameter genau gleich, wird Null zurückgeben, ansonsten der erste Wert
  • COALESCE - Geben den ersten Parameter in der Liste zurück, der nicht null ist
  • LNNVL - Kann in der where Klausel verwendet werden um einen Kondition auf Spalten zu testen die auch Null Werte enthalten könnten
  • SYS_OP_MAP_NONNULL - undocumented ?

NVL

Mit der NVL Funktion wird eine Übergabe Wert auf Null geprüft, ist der Wert Null wird der alternative Wert 2 zurückgegeben.

Beispiel:

SELECT nvl('Wert1','Wert2') FROM dual;
 
NVL('
-----
Wert1
 
 
select nvl('','Wert2')  from dual;
 
NVL('
-----
Wert2
 
-- alternative Darstellung:
 
SELECT CASE WHEN DUMMY IS NULL THEN 
         'NULL-VALUE' 
		 ELSE 
		    DUMMY 
		 END 
 FROM dual
/

NVL2

Ist der zu prüfende Wert null geben den Parameter 3 zurück, ansonsten den Parameter 2.

Beispiel:

SELECT nvl2('','Wert2','Wert3') FROM dual;
 
NVL2(
-----
Wert3
 
SELECT nvl2('Wert1','Wert2','Wert3') FROM dual;
 
NVL2(
-----
Wert2
 
-- alternative Darstellung:
 
SELECT CASE WHEN DUMMY IS NULL THEN 
         'Wert3' 
		 ELSE 
		   'Wert2' 
		 END 
 FROM dual
/

NULLIF

Sind beide Parameter genau gleich, wird Null zurückgeben, ansonsten der erste Wert.

Beispiel:

SELECT NULLIF('Wert1','Wert1') FROM dual;
 
NULLI
-----
 
SELECT NULLIF('Wert1','Wert2') FROM dual;
 
NULLI
-----
Wert1
 
-- alternative Darstellung:
 
SELECT CASE WHEN  'Wert1'='Wert1' THEN 
         NULL
		 ELSE 
		   'Wert1' 
		 END 
 FROM dual
/

COALESCE

Gebe den ersten Parameter in der Liste zurück, der nicht null ist.

Beispiel:

SELECT COALESCE('','','Wert3','','Wert4') FROM dual;
 
COALE
-----
Wert3
 
 
-- alternative Darstellung (verkürzt .-) ):
 
SELECT CASE WHEN DUMMY IS NULL THEN 
         CASE WHEN 'Wert 1' IS NULL THEN 
			   'Wert 2'
				-- usw. nach unten ,...
			ELSE 
				'Wert3' 
			END 	
   	 ELSE
		   DUMMY  
		 END 
 FROM dual
/

Aber wie lang kann die Liste sein?

Ein Versuch mit über 30.000 Übergaben Parameter hat keine ersten Grenzen erkennen lassen, es wird nach dem ersten möglichen Treffer gesucht und der wird zurück geben.

Quellen

Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information
prog/sql_nvl_functions.txt · Zuletzt geändert: 2019/09/17 11:08 von gpipperr