Función NVL2 - Amazon Redshift

Función NVL2

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

Sintaxis

NVL2 ( expression, not_null_return_value, null_return_value )

Argumentos

expresión

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

not_null_return_value

El valor devuelto si la expression (expresión) toma un valor NOT NULL. El valor not_null_return_value debe tener los mismos tipos de datos que expression (expresión) o ser convertible implícitamente a ese tipo de datos.

null_return_value

El valor de retorno si expression (expresión) toma un valor NULL. El valor null_return_value debe tener los mismos tipos de datos que expression (expresión) o ser convertible implícitamente a ese tipo de datos.

Tipo de retorno

El tipo de retorno NVL2 se determina de la siguiente manera:

  • Si alguno de los valores not_null_return_value o null_return_value es nulo, se devuelve el tipo de datos de la expresión no nula.

Si ninguno de los valores not_null_return_value y null_return_value es nulo:

  • Si los valores not_null_return_value y null_return_value tienen el mismo tipo de datos, se devuelve ese tipo de datos.

  • Si los valores not_null_return_value y null_return_value tienen tipos de datos numéricos diferentes, se devuelve el tipo de dato numérico compatible que sea menor.

  • Si los valores not_null_return_value y null_return_value tienen tipos de datos de fecha y hora diferentes, se devuelve un tipo de dato de marca temporal.

  • Si los valores not_null_return_value y null_return_value tienen tipos de datos de caracteres diferentes, se devuelve el tipo de dato de not_null_return_value.

  • Si los valores not_null_return_value y null_return_value tienen tipos de datos numéricos y no numéricos mezclados, se devuelve el tipo de dato de not_null_return_value.

importante

En los últimos dos casos en los que se devuelve el tipo de dato not_null_return_value, null_return_value 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 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_null_return_value o del parámetro null_return_value, el que haya seleccionado la función, pero tendrá el tipo de datos de not_null_return_value.

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

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