SQL

Cómo usar la expresión NULLIF de SQL Server para devolver NULL si el primer argumento es igual al segundo

Estrada Web Group
jiestrada
Cómo usar la expresión NULLIF de SQL Server para devolver NULL si el primer argumento es igual al segundo

Resumen: en este tutorial, aprenderás a usar la expresión NULLIF de SQL Server para devolver NULL si el primer argumento es igual al segundo.

Descripción general de la expresión NULLIF de SQL Server

La expresión NULLIF acepta dos argumentos y devuelve NULL si dos argumentos son iguales, de lo contrario, devuelve la primera expresión, a diferencia de la función ISNULL () de SQL Server que reemplaza NULL con un valor especificado.

A continuación, se muestra la sintaxis de la expresión NULLIF:

NULLIF(expression1, expression2)

En esta sintaxis, expression1 y expression2 son expresiones escalares. Significa que cada uno de ellas se evalúa un valor escalar.

Se recomienda que no utilices las funciones dependientes del tiempo como la función RAND() en la función NULLIF. Porque esto puede hacer que la función se evalúe dos veces y arroje resultados diferentes de las dos llamadas a la función.

Ejemplos de SQL Server NULLIF

Tomemos algunos ejemplos del uso de la expresión NULLIF

Uso de la expresión NULLIF con ejemplos de datos numéricos

Este ejemplo de un SELECT devuelve NULL porque el primer argumento es igual al segundo:

SELECT
    NULLIF(10, 10) result;

Resultado:

result
------
NULL
(1 row affected)

Sin embargo, el siguiente ejemplo devuelve el primer argumento porque los dos argumentos no son iguales:

SELECT
    NULLIF(20, 10) result;

Resultado:

result
------
20
(1 row affected)

Ejemplo de uso de expresión NULLIF con datos de cadena de caracteres

El siguiente ejemplo usa la expresión NULLIF. Devuelve NULL porque la primera cadena de caracteres es igual a la segunda:

SELECT
    NULLIF('Estrada Web Group', 'Estrada Web Group') result;

Resultado:

result
------
NULL
(1 row affected)

Este ejemplo devuelve el primer argumento porque ambos argumentos no son iguales:

SELECT
    NULLIF('Estrada Web Group', 'EWG') result;

Resultado:

result
------
Estrada Web Group
(1 row affected)

Usando la expresión NULLIF para traducir una cadena en blanco a NULL

La expresión NULLIF resulta útil cuando se trabaja con datos heredados que contienen una mezcla de cadenas nulas y vacías en una columna. Considera el siguiente ejemplo.

Primero, crea una nueva tabla con CREATE TABLE llamada sales.leads para almacenar los clientes potenciales:

CREATE TABLE sales.leads
(
    lead_id    INT     PRIMARY KEY IDENTITY,
    first_name VARCHAR(100) NOT NULL,
    last_name  VARCHAR(100) NOT NULL,
    phone      VARCHAR(20),
    email      VARCHAR(255) NOT NULL
);

En segundo lugar, inserta con INSERT INTO tres filas en la tabla sales.leads:

INSERT INTO sales.leads
(
    first_name,
    last_name,
    phone,
    email
)

VALUES
(
    'John',
    'Doe',
    '(408)-987-2345',
    'john.doe@estradawebgroup.com'
),
(
    'Jane',
    'Doe',
    '',
    'jane.doe@estradawebgroup.com'
),
(
    'David',
    'Doe',
    NULL,
    'david.doe@estradawebgroup.com'
);

En tercer lugar, consulta los datos de la tabla sales.leads:

SELECT
    lead_id,
    first_name,
    last_name,
    phone,
    email
FROM
    sales.leads
ORDER BY
    lead_id;

Resultado:

NULLIF SQL Server

La columna del teléfono es una columna que acepta valores NULL. Si no se conoce el teléfono de un cliente potencial en el momento de la grabación, la columna de teléfono tendrá NULL.

Sin embargo, a partir de la salida, la segunda fila tiene una cadena vacía en la columna del teléfono debido al error de entrada de datos. Ten en cuenta que puedes encontrar muchas situaciones como está si trabajas con bases de datos heredadas.

Para encontrar los clientes potenciales que no tienen el número de teléfono, utiliza la siguiente consulta:

SELECT   
    lead_id,
    first_name,
    last_name,
    phone,
    email
FROM   
    sales.leads
WHERE
    phone IS NULL;

Resultado:

FUNCION NULLIF DE SQL SERVER

El resultado perdió una fila que tiene la cadena vacía en la columna del teléfono. Para solucionar este problema, puedes utilizar la expresión NULLIF:

SELECT   
    lead_id,
    first_name,
    last_name,
    phone,
    email
FROM   
    sales.leads
WHERE
    NULLIF(phone,'') IS NULL;

Resultado:

Funcion NULLIF y CASE

Expresión NULLIF y CASE

Esta expresión que usa NULLIF:

SELECT
    NULLIF(a,b)

es equivalente a la siguiente expresión que usa la expresión CASE:

CASE
    WHEN a=b THEN NULL
    ELSE a
END

Observa el siguiente ejemplo:

DECLARE @a int = 10, @b int = 20;
SELECT
    NULLIF(@a,@b) AS result;

Resultado:

result
-----------
10
(1 row affected)

El siguiente ejemplo devuelve el mismo resultado, pero usa la expresión CASE:

DECLARE @a int = 10, @b int = 20;
SELECT
    CASE
        WHEN @a = @b THEN null
        ELSE
            @a
    END AS result;

La expresión CASE es detallada, mientras que la expresión NULLIF es mucho más corta y legible.

En este tutorial, has aprendido a usar la expresión NULLIF de SQL Server para devolver NULL si el primer argumento es igual al segundo.

Compartir artículo:

Más artículos geniales

¿Cómo borrar registros de una tabla de SQL Server con la instrucción DELETE?

¿Cómo borrar registros de una tabla de SQL Server con la instrucción DELETE?

En este tutorial de SQL Server, aprenderás a usar la instrucción DELETE de SQL Server para eliminar una o más filas de una tabla.

Ver artículo completo
Cómo eliminar una base de datos utilizando DROP DATABASE y SQL Server Management Studio

Cómo eliminar una base de datos utilizando DROP DATABASE y SQL Server Management Studio

Resumen: en este tutorial, aprenderás cómo eliminar una base de datos en una instancia de SQL Server utilizando la instrucción DROP DATABASE y SQL Server Management Studio.

Ver artículo completo
¿Cómo obtener datos distintos en SQL Server con SQL Distinct?

¿Cómo obtener datos distintos en SQL Server con SQL Distinct?

En SQL Server, la palabra clave DISTINCT se usa en la instrucción SELECT para recuperar valores únicos de una tabla de base de datos, es decir que no obtengamos valores repetidos. Cualquier valor duplicado solo aparecerá una vez.

Ver artículo completo

Manténgase actualizado

Obtenga excelente contenido en su bandeja de entrada todas las semanas.
Solo contenido excelente, no compartimos su correo electrónico con terceros.
Subir al inicio de la pantalla
;