1
resposta

Função coalesce

Bom dia pessoal. Estou com dificuldades para entender essa função no postgresql . Alquém tem algum tutorial para passar ?

1 resposta

Olá Samuel,

não sei se essa é sua dúvida mas vou tentar :D.

O coalesce é utilizado pra substituir valores nulos por outros valores predefinidos pelo programador.

Exemplo:

Pessoa id, ,nome, telefone 1, João, 1111-2222 2, José, null

Se você escrever a seguinte consulta.

select id, nome, telefone from pessoa;

o retorno seria algo mais ou menos assim:

1, João, 1111-2222 2, José, null

Você viu que o null é retornado na segunda linha, poís ele não está presente na tabela?

Porém você gostaria que ao invés de null viesse algo mais humano no resultado tipo "S/N" para indicar que não há número atrelado a essa pessoa, uma alternativa seria fazer o seguinte:

select id, nome, coalesce(telefone, 'S/N') from pessoa;

e o retorno seria o seguinte:

1, João, 1111-2222 2, José, S/N

Entendeu o que aconteceu? Caso o retorno do telefone seja nulo (não exista) ele substitui pelo conteúdo que você coloca no segundo parâmetro, no caso o "S/ N".

Porém o coalesce não se limita a isso, você poderia utilizar outra coluna para retornar caso a primeira seja nula.

Digamos que você tivesse uma coluna celular na sua tabela pessoa.

Usando a seguinte consulta:

select id, nome, coalesce(telefone, celular) from pessoa

O banco verificaria se o telefone estiver nulo e retorna o celular, caso o celular esteja nulo, retorna nulo mesmo.

O coalesce também é muito útil em cálculos no banco, pois se ao somar uma coluna alguma das linhas estiver nula o banco por padrão irá anular a soma inteira. É comum então encontrar consultas como a seguinte:

select sum(coalesce(vlconta, 0)) from conta

Espero que você tenha entendido. Bons Estudos.