

 Amazon Redshift dejará de admitir la creación de nuevas UDF de Python a partir del parche 198. Las UDF de Python existentes seguirán funcionando hasta el 30 de junio de 2026. Para obtener más información, consulte la [publicación del blog](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

# Función NVL2
NVL2

Devuelve uno de los dos valores, en función de si una expresión especificada toma un valor NULL o NOT NULL.

## Sintaxis
Sintaxis

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

## Argumentos
Argumentos

 *expresión*   
Una expresión, como un nombre de columna, que evalúa estados nulos.

 *not\$1null\$1return\$1value*   
El valor devuelto si la *expression (expresión)* toma un valor NOT NULL. El valor *not\$1null\$1return\$1value* debe tener los mismos tipos de datos que *expression (expresión)* o ser convertible implícitamente a ese tipo de datos.

 *null\$1return\$1value*   
El valor de retorno si *expression (expresión)* toma un valor NULL. El valor *null\$1return\$1value* debe tener los mismos tipos de datos que *expression (expresión)* o ser convertible implícitamente a ese tipo de datos.

## Tipo de retorno
Tipo de retorno

El tipo de retorno NVL2 se determina de la siguiente manera:
+ Si alguno de los valores *not\$1null\$1return\$1value* o *null\$1return\$1value* es nulo, se devuelve el tipo de datos de la expresión no nula.

Si ninguno de los valores *not\$1null\$1return\$1value* y *null\$1return\$1value* es nulo:
+ Si los valores *not\$1null\$1return\$1value* y *null\$1return\$1value* tienen el mismo tipo de datos, se devuelve ese tipo de datos.
+ Si los valores *not\$1null\$1return\$1value* y *null\$1return\$1value* tienen tipos de datos numéricos diferentes, se devuelve el tipo de dato numérico compatible que sea menor.
+ Si los valores *not\$1null\$1return\$1value* y *null\$1return\$1value* tienen tipos de datos de fecha y hora diferentes, se devuelve un tipo de dato de marca temporal.
+ Si los valores *not\$1null\$1return\$1value* y *null\$1return\$1value* tienen tipos de datos de caracteres diferentes, se devuelve el tipo de dato de *not\$1null\$1return\$1value*.
+ Si los valores *not\$1null\$1return\$1value* y *null\$1return\$1value* tienen tipos de datos numéricos y no numéricos mezclados, se devuelve el tipo de dato de *not\$1null\$1return\$1value*.

**importante**  
En los últimos dos casos en los que se devuelve el tipo de dato *not\$1null\$1return\$1value*, *null\$1return\$1value* está vinculado implícitamente a ese tipo de dato. Si los tipos de datos son incompatibles, la función falla.

## Notas de uso


[Función DECODE](r_DECODE_expression.md) se puede utilizar de manera similar a NVL2 cuando los parámetros *expression* y *search* son los dos nulos. La diferencia es que, para DECODE, el valor devuelto será el valor y el tipo de datos del parámetro *result*. Por el contrario, en el caso de NVL2, el valor devuelto tendrá el valor del parámetro *not\$1null\$1return\$1value* o del parámetro *null\$1return\$1value*, el que haya seleccionado la función, pero tendrá el tipo de datos de *not\$1null\$1return\$1value*.

Por ejemplo, si se asume que column1 es NULL, las siguientes consultas devolverán el mismo valor. No obstante, el tipo de datos de valor de retorno DECODE será INTEGER y el tipo de datos del valor de retorno NVL2 será VARCHAR.

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

## Ejemplo
Ejemplo

En el siguiente ejemplo, se modifican algunos datos de muestra y, luego, se evalúan dos campos para proporcionar la información de contacto adecuada para los usuarios: 

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