SQL: As funções Coalesce e NVL [3/5]

Aprenda como evitar campos com valores nulos

Erica Bertan
Computando Arte
3 min readOct 5, 2021

--

Photo by Nathan Dumlao on Unsplash

Esse é mais um post da série SQL para Análise de Dados, onde estou trazendo para o blog alguns comandos em SQL que são muito úteis para Análise de Dados no dia a dia. No meu último artigo, comentei um pouco sobre a função Row Number:

Coalesce e NVL: para que servem?

De forma simples, a função Coalesce retorna a primeira expressão que não for nula. No exemplo abaixo, o resultado retornado será 1:

A função NVL faz a mesma coisa que a Coalesce. Porém, dependendo de que banco você estiver utilizando, ela é limitada a duas expressões [1]. No Redshift, as funções NVL e Coalesce são sinônimos, tem a mesma sintaxe e permitem o uso de múltiplas expressões.

Em resumo, ambas as funções são muito utilizadas quando se deseja retornar um valor default em campos onde é possível ter valores nulos indesejados.

Exemplo: evitando o uso de campos vazios

Para ficar mais fácil de visualizar e seguindo o mesmo contexto dos artigos anteriores, vamos pensar em um exemplo com a base do Spotify. Os dados tem essa aparência:

Imagem 1: Músicas do Spotify ordenadas pelo campo loudness

Na imagem 1, verificamos que o campo loudness possui valores vazios. Vamos supor que queremos substituir valores vazios pelo valor -9999999, com o intuito de não atrapalhar nossas análises. A query ficaria da seguinte forma:

Imagem 2: exemplo de utilização do COALESCE

Note que se o valor que queremos utilizar para substituir os valores nulos também for um valor nulo, nenhuma substituição será feita de fato. Portanto, se você deseja utilizar algum campo como backup (ao invés de um valor hard-coded como no exemplo da Imagem 2) certifique-se se ele nunca será nulo para evitar surpresas.

Imagem 3: o COALESCE não funciona se o backup for nulo.

Próximos Passos

Neste artigo, aprendemos a utilizar outros valores como backup quando temos valores nulos indesejados. As funções NVL e COALESCE tem o mesmo propósito no Redshift. No BigQuery, a COALESCE está disponível. Já no Oracle, enquanto o NVL aceita apenas duas expressões, o COALESCE aceita múltiplas.

Se você se interessa pelo tipo de assunto abordado neste post, no próximo falaremos sobre mais duas funções muito úteis em SQL: First Value e Last Value.

Referências

[1] NVL, Database SQL Reference — Oracle

[2] NVL Expression — AWS Redshift

--

--

Erica Bertan
Computando Arte

Love to learn and sometimes I write when I’m inspired. Data Engineer @ Loggi