Pular para o conteúdo principal

Como usar a função COALESCE() no SQL (com exemplos)

Saiba como usar a função SQL COALESCE() para lidar com valores nulos, combinar colunas e limpar seus dados com exemplos e dicas do mundo real.
Actualizado 28 de mar. de 2025  · 5 min de leitura

Ao trabalhar com dados do mundo real, os valores ausentes são quase inevitáveis. Se você estiver limpando conjuntos de dados ou mesclando colunas, o SQL oferece uma solução simples, mas poderosa: a função COALESCE(). Este tutorial mostrará a você como o COALESCE() funciona, quando usá-lo e como aplicá-lo por meio de exemplos práticos - tudo em apenas algumas linhas de SQL.

O que é COALESCE() no SQL?

A função COALESCE() no SQL retorna o primeiro valor não nulo de uma lista de expressões. Se todos os valores forem nulos, ele retornará null. É comumente usado para lidar com valores ausentes ou combinar várias colunas em uma saída de fallback.

Quando você deve usar COALESCE()?

Essa função é útil para combinar os valores de várias colunas em uma só.

Por exemplo, uma tabela chamada usuários contém valores de work_email e personal_email dos usuários.

Usando a função COALESCE(), podemos criar uma coluna chamada e-mail, que mostra o endereço work_email do usuário se ele não for nulo. Caso contrário, você verá personal_email.

user_id

work_email

personal_email

COALESCE() de

work_email e

personal_email

1

angel@datacamp.com

nulo

angel@datacamp.com

2

nulo

bruce@gmail.com

bruce@gmail.com

3

cath@datacamp.com

cath@gmail.com

cath@datacamp.com

Sintaxe de COALESCE()

COALESCE(value_1, value_2, ...., value_n)

A função COALESCE() recebe pelo menos um valor (value_1). Ele retornará o primeiro valor não nulo da lista, da esquerda para a direita.

Por exemplo, ele verificará primeiro se value_1 é nulo. Caso contrário, ele retorna value_1. Caso contrário, ele verifica se value_2 é nulo. O processo continua até que a lista esteja completa. 

COALESCE() pode ser usado com colunas, expressões ou constantes.

Exemplos práticos de COALESCE()

Execute e edite o código deste tutorial online

Executar código

Exemplo 1: Substituição de null por uma constante

Considere a tabela countries com uma lista de países e seus dias nacionais. Alguns valores de dias nacionais são nulos. COALESCE() preenche os valores ausentes em national_day com a string constante 'Unknown'.

SELECT
   country_id,
   name, 
   national_day,
   COALESCE(national_day, 'Unknown') AS national_day_coalesced
FROM countries
ORDER BY country_id

Os resultados são os seguintes:

country_id

name

national_day

national_day_coalesced

1

Aruba

nulo

Desconhecido

2

Afeganistão

1919-08-19T00:00:00.000Z

1919-08-19

3

Angola

1975-11-11T00:00:00.000Z

1975-11-11

4

Anguilla

1967-05-30T00:00:00.000Z

1967-05-30

Observe como o valor null em national_day é substituído por uma constante Unknown

Exemplo 2: Escolher entre duas colunas

Temos uma tabela chamada products. Ele contém o nome do produto e sua descrição. Algumas descrições são muito longas (mais de 60 caracteres). Nesse caso, substituímos a descrição pelo nome do produto.

A consulta a seguir usa CASE para converter descrições longas em NULL e, em seguida, usa COALESCE() para retornar ao nome do produto.

SELECT DISTINCT
   product_name,
   description,
   COALESCE(
      CASE WHEN 
         LENGTH(description) >= 60 
         THEN NULL 
         ELSE description 
         END, 
      product_name) product_name_or_description
FROM products

Os resultados são os seguintes:

product_name

description

product_name_or_description

G.Skill Ripjaws V Series

"Speed:DDR4-3200,Type:288-pin DIMM,CAS:14Module:4x16GBSize:64GB"

G.Skill Ripjaws V Series

G.Skill Ripjaws V Series

"Speed:DDR4-3200,Type:288-pin DIMM,CAS:15Module:4x16GBSize:64GB"

G.Skill Ripjaws V Series

Asus X99-E-10G WS

"CPU:LGA2011-3,Fator de forma:SSI CEB,Slots de RAM:8,RAM máxima:128GB"

"CPU:LGA2011-3,Fator de forma:SSI CEB,Slots de RAM:8,RAM máxima:128GB"

Supermicro X9SRH-7TF

"CPU:LGA2011,Fator de forma:ATX,Slots de RAM:8,RAM máxima:64GB"

"CPU:LGA2011,Fator de forma:ATX,Slots de RAM:8,RAM máxima:64GB"

Observe como a coluna product_name_or_description exibe o product_name se o description for longo. Caso contrário, ele exibe o endereço description.

Exemplo 3: Lógica de fallback com várias colunas

Podemos levar o exemplo 2 um passo adiante. Suponha que existam atualmente dois requisitos:

  • Se o comprimento do description for menor que 60, exiba o description.
  • Caso contrário, verifique se o comprimento do endereço product_name é menor que 20. Em caso afirmativo, exibimos o endereço product_name.
  • Caso contrário, exiba product.
SELECT DISTINCT
   product_name,
   description,
   COALESCE(
      CASE 
         WHEN LENGTH(description) > 50
         THEN NULL
         ELSE description
      END,
   CASE 
      WHEN LENGTH(product_name) > 14
      THEN NULL
      ELSE product_name
   END,
'product') AS product_name_or_description
FROM products
ORDER BY product_name

Os resultados são os seguintes:

product_name

description

product_name_or_description

ADATA ASU800SS-128GT-C

Série:Ultimate SU800,Tipo:SSD,Capacidade:128GB,Cache:N/A

produto

ADATA ASU800SS-512GT-C

Série:Ultimate SU800,Tipo:SSD,Capacidade:512GB,Cache:N/A

produto

AMD 100-5056062

Chipset:Vega Frontier Edition Liquid,Memória:16GBCore Clock:1.5GHz

produto

AMD 100-505989

Chipset:FirePro W9100,Memória:32GBCore Clock:930MHz

Chipset:FirePro W9100,Memória:32GBCore Clock:930MHz

Observe como a coluna product_name_or_description exibe o product_name ou o description, dependendo dos comprimentos do product_name ou do description.

Mecanismos SQL compatíveis

COALESCE() você trabalha no SQL Server (a partir de 2008), no banco de dados SQL do Azure, no Azure SQL Data Warehouse, no Parallel Data Warehouse, no BigQuery e no Amazon RedShift.

Funções SQL relacionadas

Considerações finais

A função COALESCE() é uma ferramenta versátil para lidar com valores nulos e simplificar suas consultas SQL. Se você estiver substituindo dados ausentes por padrões ou combinando várias colunas em uma, o site COALESCE() ajuda a manter sua lógica limpa e legível.

Você está pronto para aprofundar suas habilidades em SQL? Confira esses cursos para iniciantes e para impulsionar a carreira no DataCamp:

Perguntas frequentes

O que acontecerá se todos os valores em COALESCE() forem NULL?

Se todos os argumentos passados para a função COALESCE() forem NULL, a função retornará NULL.

Como COALESCE() é diferente de ISNULL() ou IFNULL()?

  • ISNULL() (SQL Server) e IFNULL() (MySQL, SQLite) aceitam apenas dois argumentos.
  • COALESCE() pode aceitar vários argumentos e é mais padrão nos dialetos SQL.

  • COALESCE() faz parte do padrão ANSI SQL, enquanto ISNULL() e IFNULL() são específicos do banco de dados.

Posso usar COALESCE() com expressões ou funções?

Sim, você pode usar nomes de colunas, literais, funções ou expressões em COALESCE().

COALESCE(LOWER(name), 'unknown')

Há algum custo de desempenho ao usar COALESCE()?

Em geral, o no-COALESCE() é eficiente. No entanto, se você usá-la com expressões complexas ou dentro de consultas grandes, o banco de dados poderá avaliar mais expressões do que o necessário, dependendo de como ela foi escrita.

A função COALESCE() funciona com tipos de dados diferentes?

Sim, mas todos os argumentos devem ser implicitamente conversíveis em um tipo de dados comum. Caso contrário, ele poderá retornar um erro de conversão de tipo, dependendo do mecanismo SQL que você possui.

Posso aninhar funções COALESCE()?

Sim. Você pode aninhá-los, embora isso raramente seja necessário, pois o COALESCE() já lida com vários argumentos:

COALESCE(col1, COALESCE(col2, 'default'))

Isso é equivalente a:

COALESCE(col1, col2, 'default')
Temas

Cursos populares de SQL

Curso

Introduction to SQL

2 hr
1.1M
Learn how to create and query relational databases using SQL in just two hours.
Ver DetalhesRight Arrow
Iniciar curso
Ver maisRight Arrow
Relacionado

Tutorial

Entendendo a função SQL DECODE()

Saiba como usar DECODE() no Oracle para lógica condicional na transformação de dados. Compare DECODE() com a instrução CASE WHEN em termos de desempenho e comportamento.
Allan Ouko's photo

Allan Ouko

11 min

Tutorial

Como usar um alias SQL para simplificar suas consultas

Explore como o uso de um alias SQL simplifica os nomes de colunas e tabelas. Saiba por que usar um alias SQL é fundamental para melhorar a legibilidade e gerenciar uniões complexas.
Allan Ouko's photo

Allan Ouko

9 min

Tutorial

FUNÇÃO SQL COUNT()

COUNT() permite que você conte o número de linhas que correspondem a determinadas condições. Saiba como usá-lo neste tutorial.
Travis Tang 's photo

Travis Tang

3 min

Tutorial

FUNÇÃO SQL FORMAT()

FORMAT() é uma das funções mais comumente usadas no SQL. Aprenda suas principais aplicações neste tutorial.
Travis Tang 's photo

Travis Tang

3 min

Tutorial

Exemplos e tutoriais de consultas SQL

Se você deseja começar a usar o SQL, nós o ajudamos. Neste tutorial de SQL, apresentaremos as consultas SQL, uma ferramenta poderosa que nos permite trabalhar com os dados armazenados em um banco de dados. Você verá como escrever consultas SQL, aprenderá sobre
Sejal Jaiswal's photo

Sejal Jaiswal

15 min

Tutorial

SELEÇÃO de várias colunas no SQL

Saiba como selecionar facilmente várias colunas de uma tabela de banco de dados em SQL ou selecionar todas as colunas de uma tabela em uma consulta simples.
DataCamp Team's photo

DataCamp Team

3 min

Ver maisVer mais