Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Como usar a função NVL() no Oracle


Este tutorial do Oracle SQL fornece explicações, exemplos para a função NVL no Oracle

O que é a função NVL() no Oracle


A função NVL no Oracle é uma função de aninhamento usada para substituir valores nulos por determinados valores

Na sintaxe acima

expr1 :são os valores de origem ou expressão que podem conter null. Você pode fornecer o nome da coluna, a função no nome da coluna
expr2:É o valor de destino que será colocado caso nulo seja retornado de expr1

Se expr1 for nulo, NVL retornará expr2. Se expr1 não for nulo, NVL retornará expr1.

Pontos importantes a serem observados
(1) Os argumentos expr1 e expr2 podem ter qualquer tipo de dado. Se seus tipos de dados forem diferentes, o Oracle Database converte implicitamente um no outro. Se eles não puderem ser convertidos implicitamente, o banco de dados retornará um erro.
Se expr1 for dados de caractere, o Oracle Database converterá expr2 para o tipo de dados de expr1 antes de compará-los e retornará VARCHAR2 no conjunto de caracteres de expr1.

Se expr1 for numérico, o Oracle determinará qual argumento tem a precedência numérica mais alta, converte implicitamente o outro argumento para esse tipo de dados e retorna esse tipo de dados.

Então a seguinte declaração teria sucesso
select nvl(num-col ,10) de select nvl(char-col ,'NA') de 
select nvl(end_date,'01-MAY-18') de

A instrução a seguir faria a conversão implícita
selecione nvl(char-col ,1) de 

A seguinte declaração falharia
selecione nvl(end_date,'m/a') de 
select nvl(user_id,'abc') de

Como usar a função NVL()



Esta função é muito útil onde não queremos retornar valores nulos ou no cálculo numérico, pois nulo transformaria valores inteiros em nulos

Vamos veja um exemplo para entender
Temos uma tabela sales_people que contém as vendas realizadas pelos vendedores, % de comissão sobre as vendas, o salário das pessoas. Queremos calcular a renda mensal total dos vendedores. As vendas podem ter valores nulos

A declaração seria
selecione o nome,(salário + vendas*comissão/100)  Monthy_income from sales_people;

Ele retornará valores nulos de todas as pessoas que não fizeram nenhuma venda nesse período, pois o cálculo terá valores nulos

Isso pode ser corrigido usando a função nvl como
selecione o nome,(salário + nvl(vendas,0)*comissão/100) Renda_mensal do vendedor_pessoal;

Portanto, é claramente muito útil ao fazer operações matemáticas. A função NVL no Oracle é uma função bastante útil e pode ser usada em muitos lugares

Também lê
funções de data sql do oracle
função NULLIF no Oracle
Instrução de atualização no oracle
Função Coalesce no Oracle
alterar formato de data no oracle
https://docs .oracle.com/cd/B19306_01/server.102/b14200/functions105.htm