sql >> Database >  >> RDS >> Oracle

NVL2-functie in Oracle

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


  1. MySQL utf8mb4, fouten bij het opslaan van emoji's

  2. Belangrijkste indicatoren van probleemontwerp

  3. Queryresultaten retourneren als een door komma's gescheiden lijst in PostgreSQL

  4. Oracle Fusion Middleware / WebLogic Server 11g installeren