Ten samouczek SQL zawiera wyjaśnienia, przykłady funkcji NVL2 w Oracle
Funkcja NVL2 jest funkcją zagnieżdżania. Sprawdza pierwsze wrażenie, jeśli pierwsze wrażenie nie jest puste, to funkcja NVL2 zwraca drugie wyrażenie. jeśli pierwsze wrażenie jest puste, zwraca trzecie wyrażenie.
wyr1 :są to wartości źródłowe lub wyrażenie, które może zawierać wartość null. Możesz podać nazwę kolumny,funkcję na nazwie kolumny
expr2 :Jest to wartość wyrażenia, która jest zwracana, jeśli wyrażenie1 nie jest puste
wyrażenie3 :To jest wartość wyrażenia, która jest zwracana, jeśli wyrażenie1 jest puste
Argument wyr1 może mieć dowolny typ danych. Argumenty expr2 i expr3 mogą mieć dowolne typy danych oprócz LONG.
SQL> select nvl2(user_name,1,2) from apps.fnd_user where rownum < 5; NVL2(USER_NAME,1,2) ------------------- 1 1 1 1 SQL> select nvl2(end_date,1,2) from apps.fnd_user where rownum < 5; NVL2(END_DATE,1,2) ------------------ 1 2 1 1
Jeśli typy danych expr2 i expr3 są różne:
Jeśli wyrażenie2 jest danymi znakowymi, baza danych Oracle konwertuje wyrażenie3 na typ danych wyrażenie2 przed ich porównaniem, chyba że wyrażenie3 jest stałą null. W takim przypadku konwersja typu danych nie jest konieczna. Oracle zwraca VARCHAR2 w zestawie znaków wyrażenia 2.
Jeśli wyrażenie2 jest liczbowe, Oracle określa, który argument ma najwyższy priorytet liczbowy, domyślnie konwertuje inny argument na ten typ danych i zwraca ten typ danych.
Typ danych zwracanego typu jest zawsze taki sam jak typ danych wyraż2 chyba, że wyraż2 jest danymi znakowymi, w którym to przypadku zwracana wartość jest zawsze varchar2
SQL> select nvl2(end_date,1,'a') from apps.fnd_user where rownum < 5; select nvl2(end_date,1,'a') from apps.fnd_user where rownum < 5 * ERROR at line 1: ORA-01722: invalid number SQL> select nvl2(end_date,'a',1) from apps.fnd_user where rownum < 5; N - a 1 a a
Użycie
SELECT last_name, salary, NVL2(commission_pct, salary + (salary * commission_pct), salary) income FROM employees WHERE last_name like 'B%' ORDER BY last_name;
Powiązane artykuły
Funkcje jednowierszowe w Sql
Funkcja NULLIF w Oracle
Wykaz aktualizacji w Oracle
Funkcja łączenia w Oracle
Funkcja Oracle LITAGG
Funkcje daty Oracle