

 Amazon Redshift non supporterà più la creazione di nuovi Python UDFs a partire dalla Patch 198. Python esistente UDFs continuerà a funzionare fino al 30 giugno 2026. Per ulteriori informazioni, consulta il [post del blog](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

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

Restituisce uno dei due valori in base al fatto che un'espressione specificata valuti in NULL o NOT NULL.

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

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

## Arguments (Argomenti)
<a name="r_NVL2-arguments"></a>

 *espressione*   
Un'espressione, come ad esempio un nome di colonna, da valutare per lo stato null.

 *not\_null\_return\_value*   
Il valore restituito se l' *espressione* valuta in NOT NULL. Il valore *not\_null\_return\_value* deve avere lo stesso tipo di dati dell' *espressione* o essere implicitamente convertibile in quel tipo di dati.

 *null\_return\_value*   
Il valore restituito se l' *espressione* valuta in NULL. Il valore *null\_return\_value* deve avere lo stesso tipo di dati dell' *espressione* o essere implicitamente convertibile in quel tipo di dati.

## Tipo restituito
<a name="r_NVL2-return-type"></a>

Il tipo di NVL2 restituzione è determinato come segue:
+ Se *not\_null\_return\_value* o *null\_return\_value* è null, viene restituito il tipo di dati dell'espressione not null.

Se sia *not\_null\_return\_value* sia *null\_return\_value* sono non null:
+ Se sia *not\_null\_return\_value* sia *null\_return\_value* hanno lo stesso tipo di dati, viene restituito quel tipo di dati.
+ Se *not\_null\_return\_value* e *null\_return\_value* hanno tipi di dati numerici diversi, viene restituito il tipo di dati numerico compatibile più piccolo.
+ Se *not\_null\_return\_value* e *null\_return\_value* hanno tipi di dati di datetime diversi, viene restituito un tipo di dati numerici di timestamp.
+ Se *not\_null\_return\_value* e *null\_return\_value* hanno diversi tipi di dati di carattere, viene restituito il tipo di dati di *not\_null\_return\_value*.
+ Se *not\_null\_return\_value* e *null\_return\_value* hanno tipi di dati numerici e non numerici misti viene restituito il tipo di dati di *not\_null\_return\_value*.

**Importante**  
Negli ultimi due casi in cui viene restituito il tipo di dati di *not\_null\_return\_value*, *null\_return\_value* viene assegnato implicitamente a quel tipo di dati. Se i tipi di dati non sono compatibili, la funzione ha esito negativo.

## Note per l’utilizzo
<a name="nvl2-usage-notes"></a>

[Funzione DECODE](r_DECODE_expression.md)può essere usato in modo simile a NVL2 quando l'*espressione* e i parametri *di ricerca* sono entrambi nulli. La differenza è che per DECODE, la restituzione avrà sia il valore sia il tipo di dati del parametro *risultato*. *Al contrario, for NVL2, il valore restituito avrà il valore del parametro *not\_null\_return\_value o null\_return\_value*, a seconda di quale sia selezionato dalla funzione, ma avrà il tipo di dati *not\_null\_return\_value*.*

Ad esempio, supponendo che la colonna 1 sia NULL, le seguenti query restituiranno lo stesso valore. Tuttavia, il tipo di dati NVL2 del valore restituito DECODE sarà INTEGER e il tipo di dati del valore restituito sarà VARCHAR.

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

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

L'esempio seguente modifica alcuni dati di esempio, quindi valuta due campi per fornire informazioni di contatto appropriate per gli utenti: 

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