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 END
Linguagem 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
-----------------
2
Linguagem 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