Deze SQL-tutorial biedt uitleg, voorbeelden voor de NVL2-functie in Oracle
De NVL2-functie is een nestfunctie. Het onderzoekt de eerste indruk, als de eerste indruk niet null is, retourneert de NVL2-functie de tweede expressie. als de eerste indruk nul is, wordt de derde uitdrukking geretourneerd.
expr1 :het zijn de bronwaarden of expressie die null kunnen bevatten. U kunt de kolomnaam,functie op de kolomnaam
expr2 . opgeven :Dit is de waarde van de expressie die wordt geretourneerd als de expr1 niet null is
expr3 :Dit is de waarde van de expressie die wordt geretourneerd als de expr1 null is
Het argument expr1 kan elk datatype hebben. De argumenten expr2 en expr3 kunnen elk datatype hebben behalve 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
Als de datatypes van expr2 en expr3 verschillend zijn:
Als expr2 tekengegevens zijn, converteert Oracle Database expr3 naar het gegevenstype expr2 voordat ze worden vergeleken, tenzij expr3 een nulconstante is. In dat geval is een conversie van het datatype niet nodig. Oracle retourneert VARCHAR2 in de tekenset van expr2.
Als expr2 numeriek is, bepaalt Oracle welk argument de hoogste numerieke prioriteit heeft, converteert het impliciet het andere argument naar dat datatype en retourneert dat datatype.
Het datatype van het retourtype is altijd hetzelfde als het datatype van expr2 tenzij expr2 karaktergegevens zijn, in welk geval de retourwaarde altijd varchar2 is
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
Gebruik
SELECT last_name, salary, NVL2(commission_pct, salary + (salary * commission_pct), salary) income FROM employees WHERE last_name like 'B%' ORDER BY last_name;
Verwante artikelen
Enkele rijfuncties in Sql
NULLIF-functie in Oracle
Instructie bijwerken in Oracle
Coalesce-functie in Oracle
Oracle LISTAGG-functie
oracle-datumfuncties