📊 Evitando valores nulos com Coalesce no SQL
Quem trabalha diariamente com dados sabe que um valor vazio em uma tabela nem sempre é uma boa opção. Nesses momentos, o Coalesce surge como uma opção prática e rápida para decidir qual valor será retornado em caso de NULL. A função COALESCE() é usada para retornar o primeiro valor em uma lista que não é NULL.
Sintaxe
A sintaxe do COALESCE é bem simples. Dentro da função são passados ao menos 2 paramêtros, mas NÃO se limitam à apenas 2. Funciona da seguinte maneira: a função verifica se o primeiro valor está preenchido. Caso esteja vazio (NULL), o segundo valor é verificado. E o processo se repete até que algum valor seja retornado ou acabem os parâmetros (nesse caso, retornaria NULL).
COALESCE(valor1, valor2, …, n)
Exemplo
Vejamos um exemplo prático. Nesse caso, os valores "nome" e "telefone" serão retornados. Porém, para o campo telefone, existem 3 opções possíveis, mas somente uma é necessária. Portanto, a função COALESCE verificará se o campo "celular" está preenchido. Caso esteja, será usado ele mesmo, mas caso não, o próximo a ser verificado é o campo "telefone_fixo". E depois disso, caso também seja NULL, o próximo campo é o telefone_comercial.
Nesse exemplo ainda temos uma opção de fallback, ou seja, um retorno de segurança caso todos os campos estejam vazios. Se isso em algum momento acontecer, será retornado o texto "sem telefone", garantindo que o campo não estará completamente vazio.
SELECT nome,
COALESCE(celular, telefone_fixo, telefone_comercial, 'sem telefone') AS telefone
FROM contatos;
Para quem trabalha com SAP, a função também existe e funciona perfeitamente, como é demonstrado no exemplo abaixo:
SELECT FROM ekpo AS s
FIELDS
s~ebeln,
s~infnr,
s~matkl,
COALESCE( s~infnr, s~matkl ) AS abcd
INTO TABLE @DATA(lt_result).
Referências:
- https://help.sap.com/docs/SAP_HANA_PLATFORM/4fe29514fd584807ac9f2a04f6754767/20db6dd7751910149105978452f92bbd.html
- https://www.ionos.com/pt-br/digitalguide/servidor/configuracao/sql-coalesce/
- https://www.devmedia.com.br/funcao-coalesce-sql/23670
- https://communities.sas.com/t5/Dicas-e-recursos/Dica-da-Semana-TRUQUES-DO-PROC-SQL-com-função-COALESCE/ba-p/864981
- https://learnsql.com.br/blog/como-usar-a-funcao-coalesce-em-sql/
- https://pedroabap.blogspot.com/2021/04/sap-abap-74-command-coalesce.html