Hoje vamos de uma função do SQL bastante presente nos códigos e de certa forma acho que até subestimada quando a vemos pela primeira vez, o coalesce(). Assim como a linguagem, essa função acaba sendo deixada de lado, parecendo algo simples e banal, mas que direto acaba sendo útil. Ao menos, para mim. Sem mais delongas, vamos ao post!
A função coalesce toma diversos valores e retorna o primeiro não-nulo. Por exemplo, se você tiver o seguinte código:
select coalesce(NULL, NULL, 10);
A saída será 10. Simples assim.
Ele é muito vantajoso porque muitas vezes você está unindo duas tabelas com colunas iguais, sendo que uma das tabelas estará preenchida e a outra não. Ao combinar o join com o coalesce(), você terá uma coluna preenchida, resultante da junção das duas tabelas.
Outra coisa bacana é que você pode filtrar somente o que é nulo ou TRUE. Dessa vez, vamos olhar um exemplo mais completo. Construímos uma tabela teste:
create table teste ( Nome varchar(50), UF varchar(2), age int, value decimal, employed boolean ); insert into teste values ('Paulo','MG', 40, 100, TRUE), ('Ana' , 'BA', 30, 350, FALSE), ('Bia' , 'BA', 70, 350, FALSE), ('Eduardo' , 'BA', 66, 550, NULL), ('Marcelo' , 'MG', 32, 400, NULL), ('Marcos' , 'MG', 41, 350, FALSE), ('Paula' , 'BA', 55, 300, FALSE), ('Thiago' , 'MG', 30, 150, TRUE), ('Renato' , 'BA', 24, 250, TRUE), ('Sandra' , 'MG', 42, 100, TRUE);
Nela, temos uma coluna com VERDADEIRO ou FALSO para representar se a pessoa possui ou não emprego. Queremos filtrar somente quem possui emprego ou cujo campo veio missing, pois isso significa que a pessoa não se registrou como desempregada (não solicitou auxílio):
select * from teste where coalesce(employed,TRUE) = TRUE
Essas são só algumas das formas que você pode usar a função.
Você vai notar que outras aparecerão com o tempo e aí será grato por ter estudado isso! rsrs