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