SQLiteNULLIF

A função SQLite NULLIF aceita dois argumentos e retorna um valor NULL se eles forem iguais.

Se o primeiro argumento não for igual ao segundo, a função NULLIF retorna o primeiro argumento. Caso ambos os argumentos sejam NULL, a função NULLIF retorna um valor NULL.

Sintaxe

O seguinte ilustra a sintaxe da função NULLIF:

NULLIF(parameter_1,parameter_2);Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Logicamente, a função NULLIF é equivalente à expressão CASE :

CASE WHEN parameter_1 = parameter_2 THEN  NULL ELSE expr1 ENDLinguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Argumentos

A função NULLIF aceita exatamente dois argumentos.

Tipo de retorno

A função NULLIF retorna um valor com o tipo do primeiro argumento ou NULL.

Exemplos

Freqüentemente usamos a função NULLIF quando o banco de dados contém valores “especiais”, como zero ou string vazia, que queremos tratar como valores NULL. Isso é muito útil quando usamos funções agregadas como AVG , MAX , MIN , SUM e COUNT .

Vamos dar uma olhada no exemplo a seguir.

Primeiro, crie uma nova tabela de produtos que consiste em três colunas: nome, preço e desconto.

CREATE TABLE IF NOT EXISTS products (
    name     TEXT    NOT NULL,
    price    NUMERIC NOT NULL,
    discount NUMERIC DEFAULT 0,
    CHECK (price >= 0 AND 
           discount >= 0 AND 
           price > discount) 
);Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Segundo, insira alguns dados de amostra na tabela products.

INSERT INTO products(name,price,discount)
VALUES('Apple iPhone', 700, 0), 
      ('Samsung Galaxy',600,10), 
      ('Google Nexus',399,20);Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Terceiro, para contar a quantidade de produtos que possuem desconto, utilizamos a função NULLIF da seguinte forma:

SELECT COUNT(NULLIF(discount,0)) discount_products
FROM products;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )
discount_products
-----------------
2Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

É equivalente à seguinte consulta :

SELECT count(*)
FROM products
WHERE discount > 0;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Ou você pode usar a expressão CASE :

SELECT COUNT(CASE
    WHEN discount = 0 THEN
    NULL
    ELSE 1 END)
FROM products;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Veja também

IFNULO, COALESCE

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *