Denna SQL-handledning ger förklaringar, exempel för NVL2-funktion i Oracle
NVL2-funktionen är en kapslingsfunktion. Den undersöker det första intrycket, om det första intrycket inte är null, returnerar NVL2-funktionen det andra uttrycket. om det första intrycket är null, returnerar det det tredje uttrycket.
expr1 :det är källvärdena eller uttrycket som kan innehålla null. Du kan ange kolumnnamn, funktion på kolumnnamnet
expr2 :Detta är värdet på uttrycket som returneras om expr1 inte är null
expr3 :Detta är värdet på uttrycket som returneras om expr1 är null
Argumentet expr1 kan ha vilken datatyp som helst. Argumenten expr2 och expr3 kan ha vilken datatyp som helst förutom 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
Om datatyperna för expr2 och expr3 är olika:
Om expr2 är teckendata konverterar Oracle Database expr3 till datatypen expr2 innan de jämförs om inte expr3 är en nollkonstant. I så fall är en datatypkonvertering inte nödvändig. Oracle returnerar VARCHAR2 i teckenuppsättningen av expr2.
Om expr2 är numeriskt bestämmer Oracle vilket argument som har högst numerisk prioritet, konverterar implicit det andra argumentet till den datatypen och returnerar den datatypen.
Datatypen för returtypen är alltid densamma som datatypen för expr2 om inte expr2 är teckendata, vilket returvärde alltid är 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
Användning
SELECT last_name, salary, NVL2(commission_pct, salary + (salary * commission_pct), salary) income FROM employees WHERE last_name like 'B%' ORDER BY last_name;
Relaterade artiklar
Enkelradsfunktioner i Sql
NULLIF-funktion i Oracle
Uppdatera uttalande i Oracle
Coalesce-funktion i Oracle
Oracle LISTAGG-funktion
oracle-datumfunktioner