sql >> Databáze >  >> RDS >> Oracle

Funkce NULLIF() v Oracle

V databázi Oracle je to NULLIF() funkce porovná dva výrazy a vrátí null jsou-li oba výrazy stejné. Pokud se nerovnají, funkce vrátí první výraz.

Syntaxe

Syntaxe vypadá takto:

NULLIF(expr1, expr2)

Příklad

Zde je příklad k demonstraci:

SELECT NULLIF(5, 7)
FROM DUAL;

Výsledek:

5

V tomto případě se argumenty nerovnaly, a tak funkce vrátila první argument.

Co se stane, když jsou oba argumenty stejné:

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

Výsledek:

null

Vidíme, že NULLIF() vrátí null když jsou oba argumenty stejné

Ohledně prvního řádku SET NULL 'null'; , přidal jsem to, aby moje relace SQLcl vrátila null vždy, když je výsledek nulový.

Ve výchozím nastavení vrátí SQLcl a SQL*Plus prázdné místo vždy, když null dochází v důsledku SQL SELECT prohlášení.

Můžete však použít SET NULL určit jiný řetězec, který má být vrácen. Zde jsem uvedl, že řetězec null by měl být vrácen.

Ve srovnání s CASE

NULLIF() funkce je ekvivalentem následujícího CASE výraz:

CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END

Neplatný počet argumentů

Volání funkce bez předání jakýchkoli argumentů má za následek chybu:

SELECT NULLIF()
FROM DUAL;

Výsledek:

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

A předání příliš mnoha argumentů také způsobí chybu:

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

Výsledek:

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

  1. Jak vybrat více než 1 záznam za den?

  2. Jaké jsou některé způsoby přístupu k Microsoft SQL Server z Linuxu?

  3. Příklady LOG() v SQL Server

  4. Oracle SQL:časová razítka v klauzuli where