

 O Amazon Redshift não permitirá mais a criação de UDFs do Python a partir do Patch 198. As UDFs do Python existentes continuarão a funcionar normalmente até 30 de junho de 2026. Para ter mais informações, consulte a [publicação de blog ](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

# Função NVL2
<a name="r_NVL2"></a>

Retorna um de dois valores, dependendo se uma expressão especificada avalia para NULL ou NOT NULL.

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

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

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

 *expressão*   
Uma expressão, tal como um nome de coluna, a ser avaliada quanto ao status nulo.

 *not\$1null\$1return\$1value*   
O valor retornado se a *expressão* avaliar para NOT NULL. O valor *not\$1null\$1return\$1value* deve ter o mesmo tipo de dados que a *expressão* ou ser implicitamente conversível para esse tipo de dados.

 *null\$1return\$1value*   
O valor retornado se a *expressão* avaliar para NULL. O valor *null\$1return\$1value* deve ter o mesmo tipo de dados que a *expressão* ou ser implicitamente conversível para esse tipo de dados.

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

O tipo de retorno de NVL2 é determinado da seguinte forma:
+ Se *not\$1null\$1return\$1value* ou *null\$1return\$1value* for nulo, o tipo de dados da expressão não nula será retornado.

Se *not\$1null\$1return\$1value* e *null\$1return\$1value* não forem nulos:
+ Se *not\$1null\$1return\$1value* e *null\$1return\$1value* tiverem o mesmo tipo de dados, esse tipo de dados será retornado.
+ Se *not\$1null\$1return\$1value* e *null\$1return\$1value* tiverem diferentes tipos de dados numéricos, o menor tipo de dados numérico compatível será retornado.
+ Se *not\$1null\$1return\$1value* e *null\$1return\$1value* tiverem diferentes tipos de dados datetime, um tipo de dados de timestamp será retornado.
+ Se *not\$1null\$1return\$1value* e *null\$1return\$1value* tiverem diferentes tipos de dados de caracteres, o tipo de dados de *not\$1null\$1return\$1value* será retornado.
+ Se *not\$1null\$1return\$1value* e *null\$1return\$1value* tiverem tipos de dados numéricos e não numéricos variados, o tipo de dados de *not\$1null\$1return\$1value* será retornado.

**Importante**  
Nos últimos dois casos onde o tipo de dados de *not\$1null\$1return\$1value* é retornado, *o null\$1return\$1value* é convertido implicitamente para esse tipo de dados. Se os tipos de dados forem incompatíveis, a função falhará.

## Observações de uso
<a name="nvl2-usage-notes"></a>

[Função DECODE](r_DECODE_expression.md) pode ser usada de forma similar a NVL2 quando os parâmetros da *expressão* e da *pesquisa* forem nulos. A diferença é que para DECODE, o retorno terá o valor e o tipo de dados do parâmetro do *resultado*. Em contraste, para NVL2, o retorno terá o valor do parâmetro *not\$1null\$1return\$1value* ou *null\$1return\$1value*, o que for selecionado pela função, mas terá o tipo de dados de *not\$1null\$1return\$1value*.

Por exemplo, supondo que column1 seja NULL, as consultas seguintes retornarão o mesmo valor. Contudo, o tipo de dados do valor de retorno para DECODE será INTEGER e o tipo de dados do valor de retorno para NVL2 será VARCHAR.

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

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

O seguinte exemplo altera alguns dados de amostra e, então, avalia dois campos para fornecer as informações de contato apropriadas para usuários: 

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