prog:sql_nvl_functions
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
prog:sql_nvl_functions [2015/12/17 20:04] – [Umgang mit Null Funktionen in SQL] gpipperr | prog:sql_nvl_functions [2019/09/17 11:08] (aktuell) – [Umgang mit Null Funktionen in SQL] gpipperr | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | ===== Umgang mit Null Funktionen | ||
+ | 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 | ||
+ | * [[http:// | ||
+ | * [[https:// | ||
+ | * 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 | ||
+ | |||
+ | Beispiel: | ||
+ | <code sql> | ||
+ | |||
+ | select nvl(' | ||
+ | |||
+ | NVL(' | ||
+ | ----- | ||
+ | Wert1 | ||
+ | |||
+ | |||
+ | select nvl('',' | ||
+ | |||
+ | NVL(' | ||
+ | ----- | ||
+ | Wert2 | ||
+ | |||
+ | -- alternative Darstellung: | ||
+ | |||
+ | select case when DUMMY is null then | ||
+ | ' | ||
+ | else | ||
+ | DUMMY | ||
+ | end | ||
+ | from dual | ||
+ | / | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | ==== NVL2 ==== | ||
+ | Ist der zu prüfende Wert null geben den Parameter 3 zurück, ansonsten den Parameter 2. | ||
+ | |||
+ | Beispiel: | ||
+ | <code sql> | ||
+ | |||
+ | select nvl2('',' | ||
+ | |||
+ | NVL2( | ||
+ | ----- | ||
+ | Wert3 | ||
+ | |||
+ | select nvl2(' | ||
+ | |||
+ | NVL2( | ||
+ | ----- | ||
+ | Wert2 | ||
+ | |||
+ | -- alternative Darstellung: | ||
+ | |||
+ | select case when DUMMY is null then | ||
+ | ' | ||
+ | else | ||
+ | ' | ||
+ | end | ||
+ | from dual | ||
+ | / | ||
+ | |||
+ | </ | ||
+ | |||
+ | ==== NULLIF ==== | ||
+ | |||
+ | |||
+ | Sind beide Parameter genau gleich, wird Null zurückgeben, | ||
+ | |||
+ | Beispiel: | ||
+ | <code sql> | ||
+ | |||
+ | select NULLIF(' | ||
+ | |||
+ | NULLI | ||
+ | ----- | ||
+ | |||
+ | select NULLIF(' | ||
+ | |||
+ | NULLI | ||
+ | ----- | ||
+ | Wert1 | ||
+ | |||
+ | -- alternative Darstellung: | ||
+ | |||
+ | select case when ' | ||
+ | null | ||
+ | else | ||
+ | ' | ||
+ | end | ||
+ | from dual | ||
+ | / | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | ==== COALESCE ==== | ||
+ | |||
+ | Gebe den ersten Parameter in der Liste zurück, der nicht null ist. | ||
+ | |||
+ | Beispiel: | ||
+ | |||
+ | <code sql> | ||
+ | |||
+ | select COALESCE('','',' | ||
+ | |||
+ | COALE | ||
+ | ----- | ||
+ | Wert3 | ||
+ | |||
+ | |||
+ | -- alternative Darstellung (verkürzt .-) ): | ||
+ | |||
+ | select case when DUMMY is null then | ||
+ | case when 'Wert 1' is null then | ||
+ | ' | ||
+ | -- usw. nach unten ,... | ||
+ | else | ||
+ | ' | ||
+ | end | ||
+ | else | ||
+ | | ||
+ | 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 ==== | ||
+ | |||
+ | Oracle Dokumentation | ||
+ | |||
+ | * http:// | ||
+ | |||
+ | |||
+ | Web später zum gleichen Thema diese Zusammenfassung gefunden: | ||
+ | |||
+ | * https:// |
prog/sql_nvl_functions.txt · Zuletzt geändert: 2019/09/17 11:08 von gpipperr