A função SQL COALESCE() é utilizada para de­ter­mi­nar o primeiro valor dentro de uma lista que não é NULL. Assim, a função é uma versão sim­pli­fi­cada de uma instrução CASE cor­res­pon­dente.

O que é a função SQL COALESCE()?

A palavra-chave NULL em SQL re­pre­senta dados que não possuem valor. Esse caso ocorre, por exemplo, quando ainda você não conhece um valor es­pe­cí­fico em uma tabela e, portanto, não preenche o campo cor­res­pon­dente. Isso não significa ne­ces­sa­ri­a­mente que o campo cor­res­pon­dente não tem valor, mas pode sim­ples­mente sig­ni­fi­car que você não sabe qual é o valor. Embora esses valores NULL não sejam pre­ju­di­ci­ais à primeira vista, se acu­mu­la­rem em um banco de dados, podem torná-lo confuso. A função SQL COALESCE() é usada para retornar o primeiro valor em uma lista que não é NULL.

VPS Hosting (Virtual Private Servers)
World-class VPS at America’s lowest price

Hos­pe­da­gem VPS poderosa e de baixo custo para rodar suas apli­ca­ções sob medida, com as­sis­tente pessoal e suporte 24 horas.

  • Save 50% or more vs leading hosts
  • Unlimited traffic & no setup fees 
  • 99.99% uptime gua­ran­teed
  • Free 24/7 premium support 

Sintaxe e re­qui­si­tos de SQL COALESCE()

A sintaxe de SQL COALESCE() é bem simples. Ela é apre­sen­tada da seguinte forma:

COALESCE(valor1, valor2, …, n)
sql

Você precisa de pelo menos dois ar­gu­men­tos. Se todos os ar­gu­men­tos tiverem o valor NULL, o resultado também será NULL.

Exemplo de uso de SQL COALESCE()

Você pode ra­pi­da­mente entender o fun­ci­o­na­mento básico por meio de um exemplo simples. No código a seguir, inserimos vários ar­gu­men­tos e usamos o comando SQL SELECT para verificá-los.

SELECT COALESCE(NULL, NULL, NULL, 17, 49, NULL, 13, 15, 14, 15);
sql

A saída neste caso será “17”, pois este é o primeiro valor que não é NULL.

Combinar SQL COALESCE()

A função COALESCE() é muito mais útil quando combinada com outras operações. Para ilustrar, ima­gi­ne­mos uma tabela chamada “Fun­ci­o­ná­rios”. Esta tabela contém as colunas “Nome”, “Lo­ca­li­dade” e “Data de Nas­ci­mento”. Ela se parece com isso:

Nome Lo­ca­li­dade Data de Nas­ci­mento
Pedro Moura Cascavel 10.04.1967
Sabrina Souza Cascavel 27.07.1989
Sebastião Ferreira Caldas Novas
Martin Becker Cascavel 14.04.2001
Sarah Bernardes 02.12.2005

Dois dos registros não estão pre­en­chi­dos. Embora Sebastião Ferreira tenha uma data de nas­ci­mento e Sarah Bernardes tenha um local de re­si­dên­cia, essas in­for­ma­ções não são co­nhe­ci­das no momento. Para iden­ti­fi­car isso, a função SQL COALESCE() é útil. O código apro­pri­ado é:

SELECT Nome,
COALESCE(Localidade, 'À CONSULTAR') AS Localidade,
COALESCE(Data de Nascimento, 'À CONSULTAR') AS Data de Nascimento
FROM Funcionários;
sql

A saída cor­res­pon­dente agora é:

Nome Lo­ca­li­dade Data de Nas­ci­mento
Pedro Moura Cascavel 10.04.1967
Sabrina Souza Cascavel 27.07.1989
Sebastião Ferreira Caldas Novas À CONSULTAR
Martin Becker Cascavel 14.04.2001
Sarah Bernardes À CONSULTAR 02.12.2005

Al­ter­na­ti­vas a SQL COALESCE()

A função SQL COALESCE() apresenta so­bre­po­si­ções com uma instrução CASE e é ba­si­ca­mente uma versão abreviada dessa opção de consulta. O código CASE seria assim:

CASE
WHEN valor1 IS NOT NULL THEN valor1
WHEN valor2 IS NOT NULL THEN valor2
WHEN … IS NOT NULL THEN …
ELSE n
END
sql

A função ISNULL também é se­me­lhante à SQL COALESCE(). No entanto, ao contrário da função aqui abordada, ISNULL é avaliada apenas uma vez e não segue as regras do CASE.

Dica

Um servidor que atende exa­ta­mente às suas ne­ces­si­da­des: Com o SQL Server Hosting da IONOS, você pode optar por MSSQL, MySQL ou MariaDB e se be­ne­fi­ciar de con­sul­to­rias per­so­na­li­za­das, fortes me­ca­nis­mos de segurança e uma per­for­mance ex­cep­ci­o­nal.

Ir para o menu principal