sql >> Database teknologi >  >> RDS >> Oracle

NVL2-funktion i Oracle

Denne SQL-tutorial giver forklaringer, eksempler på NVL2-funktion i Oracle

NVL2-funktionen er en indlejringsfunktion. Den undersøger det første indtryk, hvis det første indtryk ikke er nul, så returnerer NVL2-funktionen det andet udtryk. hvis det første indtryk er nul, returnerer det det tredje udtryk.

udtr1 :det er kildeværdierne eller udtrykket, der kan indeholde null. Du kan angive kolonnenavn, funktion på kolonnenavnet
udtr2 :Dette er værdien af ​​udtrykket, der returneres, hvis expr1 ikke er null
expr3 :Dette er værdien af ​​udtrykket, der returneres, hvis expr1 er null

Argumentet udtr1 kan have enhver datatype. Argumenterne expr2 og expr3 kan have alle datatyper undtagen 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

Hvis datatyperne for expr2 og expr3 er forskellige:

Hvis expr2 er tegndata, konverterer Oracle Database expr3 til datatypen for expr2, før de sammenlignes, medmindre expr3 er en nulkonstant. I så fald er en datatypekonvertering ikke nødvendig. Oracle returnerer VARCHAR2 i tegnsættet af expr2.

Hvis expr2 er numerisk, så bestemmer Oracle hvilket argument der har den højeste numeriske forrang, konverterer implicit det andet argument til den datatype og returnerer den datatype.

Datatypen for returtypen er altid den samme som datatypen for expr2, medmindre expr2 er tegndata, hvilket tilfælde returværdien altid er 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

Brug 

SELECT last_name, salary, NVL2(commission_pct,
salary + (salary * commission_pct), salary) income
FROM employees WHERE last_name like 'B%'
ORDER BY last_name;

Relaterede artikler

Enkeltrække-funktioner i Sql
NULLIF-funktion i Oracle
Opdater sætning i Oracle
Koalesce-funktion i Oracle
Oracle LISTAGG-funktion
oracle-datofunktioner


  1. Migrering af MySQL til PostgreSQL på AWS RDS, del 1

  2. Tjek, om RPC Out er aktiveret på en forbundet server

  3. JSON_ARRAYAGG() – Opret et JSON-array fra rækkerne af en forespørgsel i MySQL

  4. Forskellen mellem DELETE og TRUNCATE tabel i SQL Server