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

NULLIF() Funzione in Oracle

In Oracle Database, il NULLIF() la funzione confronta due espressioni e restituisce null se entrambe le espressioni sono uguali. Se non sono uguali, la funzione restituisce la prima espressione.

Sintassi

La sintassi è questa:

NULLIF(expr1, expr2)

Esempio

Ecco un esempio da dimostrare:

SELECT NULLIF(5, 7)
FROM DUAL;

Risultato:

5

In questo caso, gli argomenti non erano uguali, quindi la funzione ha restituito il primo argomento.

Ecco cosa succede quando entrambi gli argomenti sono uguali:

SET NULL 'null';
SELECT NULLIF(7, 7)
FROM DUAL;

Risultato:

null

Possiamo vedere che NULLIF() restituisce null quando entrambi gli argomenti sono uguali

Per quanto riguarda la prima riga SET NULL 'null'; , l'ho aggiunto in modo che la mia sessione SQLcl restituisca null ogni volta che il risultato è nullo.

Per impostazione predefinita, SQLcl e SQL*Plus restituiscono uno spazio vuoto ogni volta che null si verifica come risultato di un SQL SELECT dichiarazione.

Tuttavia, puoi utilizzare SET NULL per specificare una stringa diversa da restituire. Qui ho specificato che la stringa null deve essere restituito.

Rispetto a CASE

Il NULLIF() la funzione è l'equivalente del seguente CASE espressione:

CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END

Conteggio argomenti non valido

La chiamata della funzione senza passare alcun argomento genera un errore:

SELECT NULLIF()
FROM DUAL;

Risultato:

SQL Error: ORA-00909: invalid number of arguments
00909. 00000 -  "invalid number of arguments"

E anche passare troppi argomenti provoca un errore:

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

Risultato:

SQL Error: ORA-00909: invalid number of arguments
00909. 00000 -  "invalid number of arguments"