Qual é o equivalente PostgreSQL da função NVL da Oracle?


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, enquanto COALESCE 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 a NVL (e aparentemente Informix também; consulte os comentários).

Deixe uma resposta

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