

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# NVL2 función
<a name="NVL2"></a>

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

## Sintaxis
<a name="NVL2-synopsis"></a>

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

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

 *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 devolución
<a name="NVL2-return-type"></a>

El tipo de NVL2 devolución 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
<a name="nvl2-usage-notes"></a>

*En efecto NVL2, la devolución tendrá el valor del parámetro *not\$1null\$1return\$1value o null\$1return\$1value*, según lo que seleccione la función, pero tendrá el *tipo de datos not\$1null\$1return\$1value*.*

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

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

## Ejemplo
<a name="NVL2-examples"></a>

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	(555) 555-0100
Caldwell Acevedo 	Nunc.sollicitudin@example.ca
Quinn Adams		   vel@example.com
Kamal Aguilar		 quis@example.com
Samson Alexander	 hendrerit.neque@example.com
Hall Alford		   ac.mattis@example.com
Lane Allen		    et.netus@example.com
Xander Allison	   ac.facilisis.facilisis@example.com
Amaya Alvarado	   dui.nec.tempus@example.com
Vera Alvarez		  at.arcu.Vestibulum@example.com
Yetta Anthony		 enim.sit@example.com
Violet Arnold		 ad.litora@example.comm
August Ashley		 consectetuer.euismod@example.com
Karyn Austin		  ipsum.primis.in@example.com
Lucas Ayers		   at@example.com
```