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"