Função coealesce do SQL

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

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *