Oracle
 sql >> Database >  >> RDS >> Oracle

Equivalente a Oracle ISNULL()

La maggior parte dei principali DBMS ci fornisce una funzione per sostituire i valori nulli con un altro valore.

Ma il nome della funzione tende a differire tra i DBMS. Ad esempio, SQL Server ha un ISNULL() funzione, mentre altri (come MySQL, MariaDB e SQLite) hanno un IFNULL() funzione per fare la stessa cosa.

Tuttavia, per confondere le cose, MySQL e MariaDB hanno ciascuno un ISNULL() funzione che funziona in modo diverso dall'omonima funzione di SQL Server (l'implementazione di MySQL e MariaDB accetta solo un singolo argomento e restituisce 1 se è null e 0 se non lo è).

Ad ogni modo, nel caso di Oracle Database, possiamo usare il NVL() funzione per sostituire i valori nulli con un altro valore.

In realtà, Oracle Database ha anche un NVL2() funzione che ci consente di fornire un altro valore da utilizzare nel caso in cui il primo argomento non sia null .

Se vogliamo semplicemente verificare se un valore è null oppure no, possiamo usare il IS NULL condizione (o il IS NOT NULL per il test opposto).

Il NVL() Funzione

Ecco un esempio che mostra come il NVL() la funzione funziona:

SELECT NVL(null, 'Run')
FROM DUAL;

Risultato:

Run

In quel caso, il primo argomento era null e così è stato restituito il secondo argomento.

Ecco cosa succede quando il primo argomento non è null :

SELECT NVL('Walk', 'Run')
FROM DUAL;

Risultato:

Walk

Viene restituito il primo argomento.

Il NVL2() Funzione

Come accennato, Oracle Database ci fornisce anche il NVL2() funzione. Questa funzione ci consente di fornire un altro valore da utilizzare nel caso in cui il primo argomento non sia null .

Ecco un esempio di come funziona:

SELECT NVL2(null, 2, 3)
FROM DUAL;

Risultato:

3

Il primo argomento era null e così è stato restituito il terzo argomento.

Ecco cosa succede quando il primo argomento non è null :

SELECT NVL2(1, 2, 3)
FROM DUAL;

Risultato:

2

Viene restituito il secondo argomento.

Il IS NULL e IS NOT NULL Condizioni

Se vogliamo solo scoprire se un valore è null , possiamo usare IS NULL condizione di confronto. In alternativa possiamo usare IS NOT NULL per verificare se non è null .

Supponiamo di avere la seguente tabella:

SELECT * FROM Autoparts
WHERE Price IS NULL;

Risultato:

ID OE# PREZZO MODELLO
2 62150B3278 CAMRY
1 62150A3278 168 HILUX

In questo caso, il PRICE colonna contiene un valore nullo per la prima riga, ma non per la seconda riga.

Ecco un esempio di utilizzo di IS NULL contro quel tavolo:

SELECT * FROM Autoparts
WHERE Price IS NULL;

Risultato:

ID OE# PREZZO MODELLO
2 62150B3278 CAMRY

Viene restituita solo la riga con il prezzo nullo.

Ecco cosa succede quando utilizziamo IS NOT NULL :

SELECT * FROM Autoparts
WHERE Price IS NOT NULL;

Risultato:

ID OE# PREZZO MODELLO
1 62150A3278 168 HILUX

Viene restituita l'altra riga.