Melhor resposta
A função NVL da Oracle permite substituir nulo por uma string nos resultados de um consulta. É útil para se livrar de valores nulos.
Esta é a sintaxe:
NVL(exp\_to\_check, replacement\_value)
Se exp\_to\_check
é nulo, então NLV () retorna replacement\_value
. Se exp\_to\_check
não for nulo, então NLV () retorna exp\_to\_check
.
Embora não seja uma correspondência exata, a função COALESCE () do PostgreSQL fornece uma funcionalidade muito semelhante. Ela aceita um número ilimitado de argumentos e retorna o primeiro argumento que não é nulo. Se todos os argumentos forem nulos, a função COALESCE
retornará nulo. Sua sintaxe é:
COALESCE (argument\_1, argument\_2, …)
Aqui estão alguns exemplos básicos para ilustrar, usando meu cliente de desenvolvimento de banco de dados Navicat para PostgreSQL :
Usando COALESCE () em uma consulta real
Aqui está um exemplo mais realista usando o banco de dados de amostra Sakila:
A tabela de endereços contém um endereço e um campo address2. O último pode ser nulo. Podemos substituir aqueles com um valor de “N / A” usando a função COALESCE ().
Eu gosto que o Editor de Consultas Navicat possa me mostrar e até mesmo inserir a sintaxe correta em minhas consultas.
Aqui está a consulta completa e os resultados:
Você pode ver que os valores nulos de address2 foram convertidos.
Atenciosamente!
Adam
Resposta
COALESCE
Claro, NVL
é um nome mais curto, mas você sabe o quê?
- Ninguém entende o que
NVL
significa. É difícil de explicar para noobs. -
NVL
leva apenas 2 argumentos, enquantoCOALESCE
leva um número arbitrário . -
COALESCE
faz parte do SQL padrão ANSI. Todo banco de dados SQL oferece suporte, incluindo Oracle. Apenas Oracle oferece suporte aNVL
(e aparentemente Informix também; consulte os comentários).