sql >> Databasteknik >  >> RDS >> Oracle

NULLIF() Funktion i Oracle

I Oracle Database, NULLIF() funktion jämför två uttryck och returnerar null om båda uttrycken är lika. Om de inte är lika, returnerar funktionen det första uttrycket.

Syntax

Syntaxen ser ut så här:

NULLIF(expr1, expr2)

Exempel

Här är ett exempel att visa:

SELECT NULLIF(5, 7)
FROM DUAL;

Resultat:

5

I det här fallet var argumenten inte lika, så funktionen returnerade det första argumentet.

Så här händer när båda argumenten är lika:

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

Resultat:

null

Vi kan se att NULLIF() returnerar null när båda argumenten är lika

Angående den första raden SET NULL 'null'; , jag lade till det så att min SQLcl-session returnerar null när resultatet är null.

Som standard returnerar SQLcl och SQL*Plus ett tomt utrymme när null uppstår som ett resultat av en SQL SELECT påstående.

Du kan dock använda SET NULL för att ange en annan sträng som ska returneras. Här specificerade jag att strängen null bör returneras.

Jämfört med CASE

NULLIF() funktion är motsvarigheten till följande CASE uttryck:

CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END

Ogiltigt antal argument

Att anropa funktionen utan att skicka några argument resulterar i ett fel:

SELECT NULLIF()
FROM DUAL;

Resultat:

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

Och att skicka för många argument orsakar också ett fel:

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

Resultat:

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

  1. Hur man lägger till en månad till ett datum i SQLite

  2. Rekursiv subquerying med sortering

  3. PostgreSQL BESKRIV TABELL

  4. Är det möjligt att mata ut en SELECT-sats från ett PL/SQL-block?