Bom dia pessoal. Estou com dificuldades para entender essa função no postgresql . Alquém tem algum tutorial para passar ?
Bom dia pessoal. Estou com dificuldades para entender essa função no postgresql . Alquém tem algum tutorial para passar ?
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.