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

Oracle ISNULL() Equivalente


A maioria dos principais SGBDs nos fornece uma função para substituir valores nulos por outro valor.

Mas o nome da função tende a diferir entre os DBMSs. Por exemplo, o SQL Server tem um ISNULL() função, enquanto outros (como MySQL, MariaDB e SQLite) têm um IFNULL() função para fazer a mesma coisa.

No entanto, para confundir as coisas, MySQL e MariaDB têm um ISNULL() função que funciona de forma diferente da função de mesmo nome do SQL Server (a implementação do MySQL e do MariaDB aceita apenas um único argumento e retorna 1 se for null e 0 se não for).

De qualquer forma, no caso do Oracle Database, podemos usar o NVL() função para substituir valores nulos por outro valor.

Na verdade, o Oracle Database também possui um NVL2() função que nos permite fornecer outro valor para usar caso o primeiro argumento não seja null .

Se simplesmente queremos testar se um valor é null ou não, podemos usar o IS NULL condição (ou o IS NOT NULL para o teste oposto).

O NVL() Função


Aqui está um exemplo que demonstra como o NVL() função funciona:
SELECT NVL(null, 'Run')
FROM DUAL;

Resultado:
Run

Nesse caso, o primeiro argumento foi null e assim o segundo argumento foi retornado.

Aqui está o que acontece quando o primeiro argumento não é null :
SELECT NVL('Walk', 'Run')
FROM DUAL;

Resultado:
Walk

O primeiro argumento é retornado.

O NVL2() Função


Como mencionado, o Oracle Database também nos fornece o NVL2() função. Esta função nos permite fornecer outro valor para usar caso o primeiro argumento não seja null .

Veja um exemplo de como funciona:
SELECT NVL2(null, 2, 3)
FROM DUAL;

Resultado:
3

O primeiro argumento foi null e assim o terceiro argumento foi retornado.

Aqui está o que acontece quando o primeiro argumento não é null :
SELECT NVL2(1, 2, 3)
FROM DUAL;

Resultado:
2

O segundo argumento é retornado.

O IS NULL e IS NOT NULL Condições


Se queremos apenas descobrir se um valor é ou não null , podemos usar o IS NULL condição de comparação. Como alternativa, podemos usar IS NOT NULL para verificar se não é null .

Suponha que temos a seguinte tabela:
SELECT * FROM Autoparts
WHERE Price IS NULL;

Resultado:
ID OE# PREÇO MODELO
2 62150B3278 CAMRY
1 62150A3278 168 HILUX

Nesse caso, o PRICE coluna contém um valor nulo para a primeira linha, mas não para a segunda linha.

Aqui está um exemplo de uso de IS NULL contra essa mesa:
SELECT * FROM Autoparts
WHERE Price IS NULL;

Resultado:
ID OE# PREÇO MODELO
2 62150B3278 CAMRY

Somente a linha com o preço nulo é retornada.

Veja o que acontece quando usamos IS NOT NULL :
SELECT * FROM Autoparts
WHERE Price IS NOT NULL;

Resultado:
ID OE# PREÇO MODELO
1 62150A3278 168 HILUX

A outra linha é retornada.