

 Amazon Redshift unterstützt ab Patch 198 nicht mehr die Erstellung neuer Python-UDFs. Bestehende Python-UDFs werden bis zum 30. Juni 2026 weiterhin funktionieren. Weitere Informationen finden Sie im [Blog-Posting](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

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.

# Funktion NVL2
<a name="r_NVL2"></a>

Gibt einen von zwei Werten aus, je nachdem, ob ein angegebener Ausdruck zu NULL oder zu NOT NULL aufgelöst wird.

## Syntax
<a name="r_NVL2-synopsis"></a>

```
NVL2 ( expression, not_null_return_value, null_return_value )
```

## Argumente
<a name="r_NVL2-arguments"></a>

 *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
<a name="r_NVL2-return-type"></a>

Der NVL2-Rückgabetyp wird wie folgt festgelegt:
+ 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
<a name="nvl2-usage-notes"></a>

[DECODE-Funktion](r_DECODE_expression.md) kann ähnlich wie NVL2 verwendet werden, wenn die Parameter *expression* und *search* 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. Die Rückgabe für NVL2 weist hingegen entweder den Wert des Parameters *not\_null\_return\_value* oder des Parameters *null\_return\_value* auf, je nachdem, welcher Parameter von der Funktion ausgewählt wird. Der Datentyp ist jedoch *not\_null\_return\_value*.

Wenn beispielsweise column1 NULL ist, geben die folgenden Abfragen denselben Wert zurück. Der Datentyp des DECODE-Rückgabewerts ist jedoch INTEGER und der Datentyp des NVL2-Rückgabewerts ist VARCHAR.

```
select decode(column1, null, 1234, '2345');
select nvl2(column1, '2345', 1234);
```

## Beispiel
<a name="r_NVL2-examples"></a>

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