SQL COALESCE(): Como determinar valores não NULL
A função SQL COALESCE() é utilizada para determinar o primeiro valor dentro de uma lista que não é NULL. Assim, a função é uma versão simplificada de uma instrução CASE correspondente.
O que é a função SQL COALESCE()?
A palavra-chave NULL em SQL representa dados que não possuem valor. Esse caso ocorre, por exemplo, quando ainda você não conhece um valor específico em uma tabela e, portanto, não preenche o campo correspondente. Isso não significa necessariamente que o campo correspondente não tem valor, mas pode simplesmente significar que você não sabe qual é o valor. Embora esses valores NULL não sejam prejudiciais à primeira vista, se acumularem 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.
Hospedagem VPS poderosa e de baixo custo para rodar suas aplicações sob medida, com assistente pessoal e suporte 24 horas.
- Save 50% or more vs leading hosts
- Unlimited traffic & no setup fees
- 99.99% uptime guaranteed
- Free 24/7 premium support
Sintaxe e requisitos de SQL COALESCE()
A sintaxe de SQL COALESCE() é bem simples. Ela é apresentada da seguinte forma:
COALESCE(valor1, valor2, …, n)sqlVocê precisa de pelo menos dois argumentos. Se todos os argumentos tiverem o valor NULL, o resultado também será NULL.
Exemplo de uso de SQL COALESCE()
Você pode rapidamente entender o funcionamento básico por meio de um exemplo simples. No código a seguir, inserimos vários argumentos e usamos o comando SQL SELECT para verificá-los.
SELECT COALESCE(NULL, NULL, NULL, 17, 49, NULL, 13, 15, 14, 15);sqlA 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, imaginemos uma tabela chamada “Funcionários”. Esta tabela contém as colunas “Nome”, “Localidade” e “Data de Nascimento”. Ela se parece com isso:
| Nome | Localidade | Data de Nascimento |
|---|---|---|
| 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 preenchidos. Embora Sebastião Ferreira tenha uma data de nascimento e Sarah Bernardes tenha um local de residência, essas informações não são conhecidas no momento. Para identificar isso, a função SQL COALESCE() é útil. O código apropriado é:
SELECT Nome,
COALESCE(Localidade, 'À CONSULTAR') AS Localidade,
COALESCE(Data de Nascimento, 'À CONSULTAR') AS Data de Nascimento
FROM Funcionários;sqlA saída correspondente agora é:
| Nome | Localidade | Data de Nascimento |
|---|---|---|
| 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 |
Alternativas a SQL COALESCE()
A função SQL COALESCE() apresenta sobreposições com uma instrução CASE e é basicamente 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
ENDsqlA função ISNULL também é semelhante à 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.
Um servidor que atende exatamente às suas necessidades: Com o SQL Server Hosting da IONOS, você pode optar por MSSQL, MySQL ou MariaDB e se beneficiar de consultorias personalizadas, fortes mecanismos de segurança e uma performance excepcional.

