Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Funkcja NVL2() w Oracle

W bazie danych Oracle NVL2() funkcja pozwala nam zastąpić wartości null inną wartością.

Jest podobny do NVL() funkcja, z tą różnicą, że przyjmuje trzy argumenty zamiast dwóch. To pozwala nam określić inną wartość do zwrócenia w przypadku, gdy pierwszy argument nie jest pusty.

Składnia

Składnia wygląda tak:

NVL2(expr1, expr2, expr3)

Jeśli expr1 nie ma wartości null, to NVL2 zwraca expr2 . Jeśli expr1 ma wartość null, to NVL2 zwraca expr3 .

Przykład

Oto przykład do zademonstrowania:

SELECT NVL2(null, 2, 3)
FROM DUAL;

Wynik:

3

Pierwszy argument miał wartość NULL, więc został zwrócony trzeci argument.

A oto, co się dzieje, gdy pierwszy argument nie jest pusty:

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

Wynik:

2

Kiedy wartości zastępcze są zerowe

Jeśli drugi lub trzeci argument jest pusty, możesz otrzymać wynik pusty.

Przykład:

SET NULL '(null)';
SELECT 
    NVL2(1, null, 3) AS "r1",
    NVL2(null, 2, null) AS "r2"
FROM DUAL;

Wynik:

       r1        r2 
_________ _________ 
   (null)    (null)

Odnośnie pierwszej linii SET NULL '(null)'; , dodałem ten wiersz, aby moja sesja SQLcl zwracała tę wartość, gdy wynik jest pusty.

Domyślnie SQLcl i SQL*Plus zwracają spację, gdy null występuje w wyniku polecenia SQL SELECT oświadczenie.

Możesz jednak użyć SET NULL aby określić inny ciąg do zwrócenia (tak jak zrobiłem tutaj).

Nieprawidłowa liczba argumentów

Wywołanie funkcji bez przekazywania jakichkolwiek argumentów skutkuje błędem:

SELECT NVL2()
FROM DUAL;

Wynik:

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

A przekazanie zbyt wielu argumentów również powoduje błąd:

SELECT NVL2(1, 2, 3, 4)
FROM DUAL;

Wynik:

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

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jaki jest idealny zestaw narzędzi do programowania w PL/SQL?

  2. Sprawdź, czy tabela istnieje w Oracle

  3. Schemat inżynierii odwrotnej (wyrocznia) do ERD

  4. LITAGG w Oracle, aby zwrócić różne wartości

  5. Co oznacza dwukropek :robi w zapytaniu SQL?