Función NULLIF - Amazon Redshift

Función NULLIF

Sintaxis

La expresión NULLIF compara dos argumentos y devuelve un valor nulo si los argumentos son iguales. Si no son iguales, se devuelve el primer argumento. Esta expresión realiza lo contrario a lo que realiza la expresión NVL o COALESCE.

NULLIF ( expression1, expression2 )

Argumentos

expresión1, expresión2

Las columnas o expresiones de destino que se comparan. El tipo de retorno es el mismo que el tipo de la primera expresión. El nombre predeterminado de la columna del resultado NULLIF es el nombre de columna de la primera expresión.

Ejemplos

En el ejemplo siguiente, la consulta devuelve la cadena first porque los argumentos no son iguales.

SELECT NULLIF('first', 'second'); case ------- first

En el ejemplo siguiente, la consulta devuelve NULL porque los argumentos literales de la cadena son iguales.

SELECT NULLIF('first', 'first'); case ------- NULL

En el ejemplo siguiente, la consulta devuelve 1 porque los argumentos de enteros no son iguales.

SELECT NULLIF(1, 2); case ------- 1

En el ejemplo siguiente, la consulta devuelve NULL porque los argumentos de enteros son iguales.

SELECT NULLIF(1, 1); case ------- NULL

En el siguiente ejemplo, la consulta devuelve valores nulos cuando los valores LISTID y SALESID coinciden:

select nullif(listid,salesid), salesid from sales where salesid<10 order by 1, 2 desc; listid | salesid --------+--------- 4 | 2 5 | 4 5 | 3 6 | 5 10 | 9 10 | 8 10 | 7 10 | 6 | 1 (9 rows)

Puede usar NULLIF para asegurarse de que las cadenas vacías se devuelvan siempre como valores nulos. En el siguiente ejemplo, la expresión NULLIF devuelve un valor nulo o una cadena que tiene al menos un carácter.

insert into category values(0,'','Special','Special'); select nullif(catgroup,'') from category where catdesc='Special'; catgroup ---------- null (1 row)

NULLIF ignora los espacios en blanco a la derecha. Si una cadena no está vacía porque contiene espacios en blanco, NULLIF seguirá devolviendo un valor nulo:

create table nulliftest(c1 char(2), c2 char(2)); insert into nulliftest values ('a','a '); insert into nulliftest values ('b','b'); select nullif(c1,c2) from nulliftest; c1 ------ null null (2 rows)