Coalesce: colocando valor padrão no resultado da query

(Última atualização em: 22 de março de 2016)

Já sabemos que quando se trata de SQL, nulo é nulo e vazio é vazio. Nosso sistema permite o campo nulo, então temos alguns nulos no banco:

select nome, empresa from Alunos a;

> Guilherme, NULL 
> ...
> Ana, Alura

Agora, queria trazer também a empresa(que é um campo opcional). Mas se ela fosse null, gostaria que trouxesse algo mais significativo, como “Não informada”.
O que quero então é trazer um valor padrão na hora de executar a query:

select nome, coalesce(empresa, "Não informada")
   from Alunos a;

> Guilherme, Não informada 
> ...
> Ana, Alura

O coalesce traz o primeiro valor não nulo do que passamos pra ele. Isto é: se a empresa for nula, ele devolve “Não informada”. Também podemos usar com números: coalesce(valor, 0).

Dica do Rafael Dipold!

Tech Education Leader no Alura

  • Robson

    A função isnull (valor,0) do SQL SERVER também faz isso.

  • Leonardo Ramos

    O NVL no Oracle também faz isso.

  • Natália

    Tem como usar esses dados retornados pela função coalesce?
    Ex: SELECT DISTINCT COALESCE (grupo_sc, numero)
    Quero pegar o resultado como se fosse uma nova coluna para então fazer parâmetros, é possível?

    • Guilherme Silveira

      Pode sim Natalia, tem que sempre cuidar para que a “nova coluna” do resultado só seja usada nas partes da query onde ela pode ser usada.

Próximo ArtigoQual a diferença entre i++ e ++i?