sql >> Databasteknik >  >> RDS >> Oracle

NVL2-funktion i Oracle

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


  1. Hur man konverterar en postgres-databas till sqlite

  2. Hur konverterar jag ett heltal till sträng som en del av en PostgreSQL-fråga?

  3. Anpassade numeriska formatsträngar som stöds av FORMAT() i SQL Server

  4. skapa tabell med sequence.nextval i oracle