0Pricing
SQL Academy · Aula

COALESCE e NULLIF

Forneça valores padrão e evite a divisão por zero.

COALESCE e NULLIF é uma aula grátis de SQL Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de SQL Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de SQL Academy inclui 4 aulas no total.

Substituição de valores ausentes

Detectar valores NULL é metade do trabalho — muitas vezes, você quer substituí-los por um valor padrão adequado. A função COALESCE do SQL faz exatamente isso.

E quando você quiser criar um NULL deliberadamente (por exemplo, para evitar uma divisão por zero), NULLIF é a ferramenta certa. Esta lição aborda ambos.

-- Show a placeholder when phone is missing
SELECT name, COALESCE(phone, 'no phone on file') AS phone
FROM customers;

Como COALESCE funciona

COALESCE aceita qualquer número de argumentos e retorna o primeiro que não é NULL, da esquerda para a direita.

Se todos os argumentos forem NULL, o resultado será NULL. Pense nisso como: "use isto, ou aquilo, ou, por fim, este valor padrão".

SELECT
  COALESCE(NULL, NULL, 'third', 'fourth') AS a, -- 'third'
  COALESCE(NULL, 42)                       AS b, -- 42
  COALESCE(NULL, NULL)                     AS c; -- NULL

Encadeando valores padrão

Como COALESCE aceita muitos argumentos, você pode criar uma cadeia de preferências.

Por exemplo, prefira um número de celular, depois um número profissional, depois um número residencial e, por fim, uma mensagem literal.

SELECT name,
  COALESCE(mobile, work_phone, home_phone, 'unreachable') AS best_contact
FROM contacts;

Valores padrão nos cálculos

NULL se propaga pela aritmética, portanto um único valor ausente pode transformar todo o cálculo em NULL. Envolva a entrada que pode ser NULL em COALESCE para substituí-la por um valor neutro.

Aqui, um desconto ausente é tratado como 0.

-- Without COALESCE, a NULL discount makes total NULL
SELECT
  price - COALESCE(discount, 0) AS total
FROM line_items;

Regras de tipo de COALESCE

Todos os argumentos de COALESCE devem ter tipos compatíveis. PostgreSQL escolhe um tipo comum e gera um erro se não conseguir.

Por exemplo, você não pode misturar um número e uma cadeia de texto livre sem conversão — o valor padrão também precisa ser um número.

-- OK: both integers
SELECT COALESCE(score, 0) FROM results;

-- Cast when mixing types
SELECT COALESCE(score::text, 'n/a') FROM results;

Conheça NULLIF

NULLIF(a, b) faz, em espírito, o oposto de COALESCE: retorna NULL quando a = b e, caso contrário, retorna a.

É uma forma concisa de transformar um valor específico de "sentinela" em um NULL real.

SELECT
  NULLIF(5, 5)   AS a,  -- NULL (equal)
  NULLIF(5, 9)   AS b,  -- 5    (not equal)
  NULLIF('', '') AS c;  -- NULL (treat empty string as missing)

NULLIF para divisão por zero

O uso clássico de NULLIF é evitar erros de divisão. Dividir por 0 gera um erro, mas dividir por NULL simplesmente resulta em NULL.

Envolva o divisor em NULLIF(divisor, 0) para transformar uma falha em um NULL seguro.

-- If total_visits is 0, this would error.
-- NULLIF turns the divisor into NULL, giving a NULL ratio instead.
SELECT
  conversions / NULLIF(total_visits, 0) AS conversion_rate
FROM campaigns;

Combinando NULLIF e COALESCE

NULLIF e COALESCE combinam muito bem. Use NULLIF para converter um valor de sentinela em NULL e depois COALESCE para fornecer um padrão apropriado para esse NULL.

Aqui, uma observação com texto vazio se torna o texto literal "—".

-- Treat '' as missing, then display a dash
SELECT
  COALESCE(NULLIF(note, ''), '—') AS display_note
FROM tickets;

Proporção média segura

Junte tudo em uma consulta analítica robusta: proteja contra divisão por zero com NULLIF e depois mostre 0 em vez de NULL com COALESCE.

A consulta nunca gera erros e sempre exibe um número limpo.

SELECT
  product_id,
  COALESCE(returns / NULLIF(orders, 0), 0) AS return_rate
FROM product_stats;

COALESCE versus IS NULL

Ambos lidam com valores NULL, mas têm objetivos diferentes:

  • IS NULL / IS NOT NULL — verificam valores ausentes em uma condição.
  • COALESCE — substitui um valor na saída.

Use COALESCE quando estiver formatando resultados e IS NULL quando estiver filtrando.

-- Filter (IS NULL)
SELECT * FROM customers WHERE phone IS NULL;

-- Substitute (COALESCE)
SELECT COALESCE(phone, 'unknown') FROM customers;

Juntando tudo

Uma referência rápida para esta lição:

  • COALESCE(a, b, c) → primeiro valor que não é NULL.
  • NULLIF(a, b) → NULL quando forem iguais; caso contrário, a.
  • Use NULLIF(divisor, 0) para evitar divisão por zero.
  • Use COALESCE para fornecer valores padrão em cálculos e na saída.
SELECT
  COALESCE(nickname, full_name, 'guest')       AS display_name,
  revenue / NULLIF(orders, 0)                  AS avg_order_value
FROM accounts;

Verificação rápida

O que NULLIF(amount, 0) retorna quando amount é 0?

Recapitulação

Agora você consegue substituir valores NULL por padrões usando COALESCE (o primeiro valor que não é NULL prevalece) e criar valores NULL deliberadamente com NULLIF (NULL quando dois valores coincidem).

Você viu o padrão para evitar divisão por zero e como encadear as duas funções para obter uma saída segura e limpa. A seguir, você explorará como os valores NULL se comportam dentro de COUNT, SUM e das junções.

SELECT
  COALESCE(NULLIF(comment, ''), 'no comment') AS comment,
  total / NULLIF(qty, 0)                       AS unit_price
FROM invoices;

Perguntas Frequentes

A aula “COALESCE e NULLIF” é grátis?

Sim — o texto completo de “COALESCE e NULLIF” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de SQL Academy, atualize para CoddyKit PRO. O curso de SQL Academy inclui 4 aulas no total.

O que vou aprender em “COALESCE e NULLIF”?

Forneça valores padrão e evite a divisão por zero. Você pratica SQL Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar SQL Academy?

Nenhuma experiência prévia é necessária. SQL Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.

Quanto tempo leva a aula “COALESCE e NULLIF”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de SQL Academy?

Sim. Cada aula de SQL Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. O que NULL realmente significa
  2. IS NULL e IS NOT NULL
  3. COALESCE e NULLIF
  4. NULLs em agregações e junções
← Voltar para SQL Academy