Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Gibt einen von zwei Werten aus, je nachdem, ob ein angegebener Ausdruck zu NULL oder zu NOT NULL aufgelöst wird.
Syntax
NVL2 ( expression, not_null_return_value, null_return_value )
Argumente
- expression
-
Ein Ausdruck (beispielsweise ein Spaltenname), der hinsichtlich des Null-Status ausgewertet werden soll.
- not_null_return_value
-
Der Wert, der zurückgegeben wird, wenn expression zu NOT NULL ausgewertet wird. Der Wert not_null_return_value muss entweder denselben Datentyp wie expression haben oder implizit in diesen Datentyp konvertiert werden können.
- null_return_value
-
Der Wert, der zurückgegeben wird, wenn expression zu NULL ausgewertet wird. Der Wert null_return_value muss entweder denselben Datentyp wie expression haben oder implizit in diesen Datentyp konvertiert werden können.
Rückgabetyp
Der NVL2 Rückgabetyp wird wie folgt bestimmt:
-
Wenn not_null_return_value oder null_return_value null ist, wird der Datentyp des Nicht-Null-Ausdrucks zurückgegeben.
Wenn sowohl not_null_return_value als auch null_return_value nicht null sind:
-
Wenn not_null_return_value und null_return_value denselben Datentyp haben, wird dieser Datentyp zurückgegeben.
-
Wenn not_null_return_value und null_return_value unterschiedliche numerische Datentypen haben, wird der kleinste kompatible numerische Datentyp zurückgegeben.
-
Wenn not_null_return_value und null_return_value unterschiedliche Datum-/Uhrzeit-Datentypen haben, wird ein Zeitstempeldatentyp zurückgegeben.
-
Wenn not_null_return_value und null_return_value unterschiedliche Zeichendatentypen haben, wird der Datentyp von not_null_return_value zurückgegeben.
-
Wenn not_null_return_value und null_return_value gemischte numerische und nicht numerische Datentypen haben, wird der Datentyp von not_null_return_value zurückgegeben.
Wichtig
In den letzten beiden Fällen, in denen der Datentyp von not_null_return_value zurückgegeben wird, wird null_return_value implizit in diesen Datentyp umgewandelt. Wenn die Datentypen nicht kompatibel sind, schlägt die Funktion fehl.
Nutzungshinweise
DECODE-Funktionkann auf ähnliche Weise verwendet werden, NVL2 als ob der Ausdruck und die Suchparameter beide Null sind. Der Unterschied besteht darin, dass die Rückgabe für DECODE sowohl den Wert als auch den Datentyp des Parameters result aufweist. Im Gegensatz dazu hat die Rückgabe für NVL2 entweder den Wert des Parameters not_null_return_value oder null_return_value, je nachdem, welcher Wert von der Funktion ausgewählt wurde, aber den Datentyp not_null_return_value.
Wenn beispielsweise column1 NULL ist, geben die folgenden Abfragen denselben Wert zurück. Der DECODE-Rückgabewert-Datentyp ist jedoch INTEGER und der Rückgabewert-Datentyp VARCHAR. NVL2
select decode(column1, null, 1234, '2345');
select nvl2(column1, '2345', 1234);
Beispiel
Im folgenden Beispiel werden einige Beispieldaten modifiziert und anschließend zwei Felder ausgewertet, um die richtigen Kontaktinformationen für Benutzer bereitzustellen:
update users set email = null where firstname = 'Aphrodite' and lastname = 'Acevedo';
select (firstname + ' ' + lastname) as name,
nvl2(email, email, phone) AS contact_info
from users
where state = 'WA'
and lastname like 'A%'
order by lastname, firstname;
name contact_info
--------------------+-------------------------------------------
Aphrodite Acevedo (906) 632-4407
Caldwell Acevedo Nunc.sollicitudin@Duisac.ca
Quinn Adams vel@adipiscingligulaAenean.com
Kamal Aguilar quis@vulputaterisusa.com
Samson Alexander hendrerit.neque@indolorFusce.ca
Hall Alford ac.mattis@vitaediamProin.edu
Lane Allen et.netus@risusDonec.org
Xander Allison ac.facilisis.facilisis@Infaucibus.com
Amaya Alvarado dui.nec.tempus@eudui.edu
Vera Alvarez at.arcu.Vestibulum@pellentesque.edu
Yetta Anthony enim.sit@risus.org
Violet Arnold ad.litora@at.com
August Ashley consectetuer.euismod@Phasellus.com
Karyn Austin ipsum.primis.in@Maurisblanditenim.org
Lucas Ayers at@elitpretiumet.com