Oracle
 sql >> база данни >  >> RDS >> Oracle

Функция NVL2() в Oracle

В Oracle Database, NVL2() функцията ни позволява да заменим нулеви стойности с друга стойност.

Той е подобен на NVL() функция, с изключение на това, че приема три аргумента вместо два. Това ни позволява да посочим различна стойност, която да върнем, в случай че първият аргумент не е нулев.

Синтаксис

Синтаксисът е така:

NVL2(expr1, expr2, expr3)

Ако expr1 не е нула, тогава NVL2 връща expr2 . Ако expr1 е нула, след това NVL2 връща expr3 .

Пример

Ето пример за демонстрация:

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

Резултат:

3

Първият аргумент беше нулев и така беше върнат третият аргумент.

И ето какво се случва, когато първият аргумент не е нулев:

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

Резултат:

2

Когато заместващите стойности са нула

Ако вторият или третият аргумент е нулев, тогава може да получите резултат нулев.

Пример:

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

Резултат:

       r1        r2 
_________ _________ 
   (null)    (null)

По отношение на първия ред SET NULL '(null)'; , добавих този ред, така че моята SQLcl сесия да връща тази стойност, когато резултатът е нулев.

По подразбиране SQLcl и SQL*Plus връщат празно пространство всеки път, когато null възниква в резултат на SQL SELECT изявление.

Можете обаче да използвате SET NULL за да посочите различен низ, който да бъде върнат (както направих тук).

Невалиден брой аргументи

Извикването на функцията без предаване на аргументи води до грешка:

SELECT NVL2()
FROM DUAL;

Резултат:

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

И предаването на твърде много аргументи също води до грешка:

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

Резултат:

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. Функция SOUNDEX() в Oracle

  2. Unitils и DBMaintainer - как да ги накарам да работят с множество потребители/схеми?

  3. Как мога да видя заявки, които се изпълняват срещу Oracle?

  4. 4 PL/SQL примера за анонимни блокове

  5. Какво е Отмяна и повторение в базата данни на Oracle