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

NULLIF() Funktion i Oracle

I Oracle Database er NULLIF() funktion sammenligner to udtryk og returnerer null hvis begge udtryk er ens. Hvis de ikke er ens, returnerer funktionen det første udtryk.

Syntaks

Syntaksen ser sådan ud:

NULLIF(expr1, expr2)

Eksempel

Her er et eksempel til demonstration:

SELECT NULLIF(5, 7)
FROM DUAL;

Resultat:

5

I dette tilfælde var argumenterne ikke ens, og derfor returnerede funktionen det første argument.

Her er, hvad der sker, når begge argumenter er lige store:

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

Resultat:

null

Vi kan se, at NULLIF() returnerer null når begge argumenter er ens

Angående den første linje SET NULL 'null'; , jeg tilføjede det, så min SQLcl-session returnerer null når resultatet er nul.

Som standard returnerer SQLcl og SQL*Plus et tomt mellemrum, når null opstår som et resultat af en SQL SELECT udmelding.

Du kan dog bruge SET NULL for at angive en anden streng, der skal returneres. Her specificerede jeg, at strengen null skal returneres.

Sammenlignet med CASE

NULLIF() funktion svarer til følgende CASE udtryk:

CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END

Ugyldigt argumentantal

Kaldning af funktionen uden at sende nogen argumenter resulterer i en fejl:

SELECT NULLIF()
FROM DUAL;

Resultat:

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

Og at sende for mange argumenter medfører også en fejl:

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

Resultat:

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

  1. Arbejder dine medarbejdere på afstand? Sådan holder du dine data sikre.

  2. MYSQL OR vs IN ydeevne

  3. Hvordan kan en LEFT OUTER JOIN returnere flere poster, end der findes i den venstre tabel?

  4. SQL Indfyld tabel med tilfældige data