NVL-konverteringer for ulike datatyper. Grensetninger i SELECT-kommandoen Oracle nvl-beskrivelse

Vi berørte nestede funksjoner litt tidligere, nå skal vi se på dem litt mer detaljert. Vi vil også vurdere funksjoner for å jobbe med NULL-verdien og funksjoner som hjelper til med å implementere forgreningsoperasjonen i en spørring.

Nestede funksjoner

Nestede funksjoner bruker returverdien til én funksjon som en inngangsparameter til en annen funksjon. Funksjoner returnerer alltid bare én verdi. Derfor kan du behandle resultatet av et funksjonskall som en bokstavelig verdi når du bruker det som en parameter til et annet funksjonskall. Strengefunksjoner kan nestes til et hvilket som helst nestenivå. Ett funksjonskall ser slik ut

Funksjon1(parameter1, parameter2, …) = resultat

Å erstatte en funksjonsparameter med et kall til en annen funksjon kan resultere i uttrykk som

F1(param1.1, F2(param2.1, param2.2, F3(param3.1)), param1.3)

Nestede funksjoner evalueres først før resultatene deres brukes som inngangsverdier for andre funksjoner. Funksjoner evalueres fra det dypeste hekkenivået til det øverste fra venstre til høyre. Det forrige uttrykket utføres som følger

  1. Funksjon F3(param1) evalueres og returverdien brukes som tredje parameter for funksjon 2, la oss kalle den param2.3
  2. Deretter blir funksjonen F2(param1, param2.2, param2.3) evaluert og returverdien brukes som den andre parameteren til funksjonen F1 - param1.2
  3. Til slutt blir funksjonen F1(param1, param2, param1.3) evaluert og resultatet returneres til det anropende programmet.

Dermed er F3-funksjonen på tredje hekkenivå.

La oss vurdere forespørselen

velg next_day(last_day(sysdate)-7, 'tir') fra dual;

  1. Det er tre funksjoner i denne spørringen, fra lavere nivå til øvre nivå - SYSDATE, LAST_DAY, NEXT_DAY. Forespørselen utføres som følger
  2. Den nestede SYSDATE-funksjonen utføres. Den returnerer gjeldende systemtid. La oss si at dagens dato er 28. oktober 2009
  3. Deretter beregnes resultatet av funksjonen på andre nivå LAST_DAY. LAST_DATE('28-OCT-2009') returnerer den siste dagen i oktober 2009, som er 31. oktober 2009.
  4. Deretter trekkes syv dager fra denne datoen - det viser seg 24. oktober.
  5. Til slutt blir funksjonen NEXT_DAY('24-OCT-2009', 'tir') evaluert, og spørringen returnerer siste tirsdag i oktober – som i vårt eksempel er 27. OKT-2009.

Det er ganske vanskelig å forstå og bygge komplekse uttrykk ved å bruke mange nestede funksjonskall, men dette kommer med tid og praksis. Du kan dele opp slike uttrykk i deler og teste dem separat. DUAL-tabellen er veldig nyttig for å teste spørringer og funksjonsanropsresultater. Du kan teste og feilsøke små komponenter, som deretter kombineres til ett stort ønsket uttrykk.

Forgreningsfunksjoner

Grenfunksjoner, også kjent som IF-THEN-ELSE, brukes til å bestemme utførelsesveien avhengig av noen omstendigheter. Forgreningsfunksjoner returnerer forskjellige resultater basert på resultatet av tilstandsevalueringen. Gruppen av slike funksjoner inkluderer funksjoner for å arbeide med NULL-verdien: NVL, NVL2, NULLIF og COALESCE. Og også de vanlige funksjonene representert av DECODE-funksjonen og CASE-uttrykket. DECODE-funksjonen er en Oracle-funksjon, mens CASE-uttrykket finnes i ANSI SQL-standarden.

NVL funksjon

NVL-funksjonen tester verdien til en kolonne eller et uttrykk av en hvilken som helst datatype mot NULL. Hvis verdien er NULL, returnerer den en alternativ ikke-NULL standardverdi, ellers returnerer den den opprinnelige verdien.

NVL-funksjonen har to nødvendige parametere og syntaksen er NVL(original, ifnull) der original er den opprinnelige verdien som skal sjekkes og ifnull er resultatet som returneres av funksjonen hvis den opprinnelige verdien er NULL. Datatypen til ifnull- og originalparametrene må være kompatible. Det vil si at enten må datatypen være den samme eller det må være mulig å implisitt konvertere verdier fra en type til en annen. NVL-funksjonen returnerer en verdi av samme datatype som datatypen til den opprinnelige parameteren. La oss vurdere tre spørsmål

Spørring 1: velg nvl(1234) fra dual;

Spørring 2: velg nvl(null, 1234) fra dual;

Spørring 3: velg nvl(substr('abc', 4), 'Ingen understreng finnes') fra dual;

Siden NVL-funksjonen krever to parametere, vil forespørsel 1 returnere feil ORA-00909: ugyldig antall argumenter. Spørring 2 vil returnere 1234 fordi NULL-verdien er sjekket og den er NULL. Spørring tre bruker en nestet SUBSTR-funksjon som prøver å trekke ut det fjerde tegnet fra en streng på tre tegn, og returnerer NULL, og NVL-funksjonen returnerer strengen 'No sbustring exists'.

NVL-funksjonen er veldig nyttig når du arbeider med tall. Den brukes til å konvertere NULL-verdier til 0 slik at aritmetiske operasjoner på tall ikke returnerer NULL

NVL funksjon2

NVL2-funksjonen gir mer funksjonalitet enn NVL, men tjener også til å håndtere NULL-verdier. Den tester verdien av en kolonne eller et uttrykk av en hvilken som helst type mot NULL. Hvis verdien ikke er NULL, returneres den andre parameteren, ellers returneres den tredje parameteren, i motsetning til NVL-funksjonen, som i dette tilfellet returnerer den opprinnelige verdien.

NVL2-funksjonen har tre nødvendige parametere og syntaksen er NVL2(original, ifnotnull, ifnull), der original er verdien som testes, ifnotnull er verdien som returneres hvis originalen ikke er NULL, og ifnull er verdien som returneres hvis originalen er NULL. Datatypene til ifnotnull- og ifnull-parameterne må være kompatible, og de kan ikke være av typen LONG. Datatypen som returneres av NVL2-funksjonen er lik datatypen til ifnotnull-parameteren. La oss se på noen få eksempler

Spørring 1: velg nvl2(1234, 1, 'en streng') fra dual;

Spørring 2: velg nvl2(null, 1234, 5678) fra dual;

Spørring 3: velg nvl2(substr('abc', 2), 'Ikke bc', 'Ingen understreng') fra dual;

Ifnotnull-parameteren i forespørsel 1 er et tall, og ifnull-parameteren er en streng. Fordi datatypene er inkompatible, returneres feilen "ORA-01722: ugyldig nummer". Spørring to returnerer parameteren ifnull, siden original er NULL og resultatet blir 5678. Spørring tre bruker SUBSTR-funksjonen som returnerer 'bc' og kaller NVL2('bc','Ikke bc','Ingen understreng') - som returnerer ifnotnull-parameteren – 'Ikke bc'.

NULLIF funksjon

NULLIF-funksjonen sjekker om to verdier er identiske. Hvis de er like, returneres NULL, ellers returneres den første parameteren. NULLIF-funksjonen har to nødvendige parametere og syntaksen er NULLIF(ifunequal, comparison_item). Funksjonen sammenligner to parametere og hvis de er identiske, returneres NULL, ellers er parameteren ifulik. La oss vurdere forespørslene

Spørring 1: velg nullif(1234, 1234) fra dual;

Spørring en returnerer NULL siden parameterne er identiske. Strengene i Query 2 konverteres ikke til en dato, men sammenlignes som strenger. Siden strengene er av forskjellig lengde, returneres parameteren iunequal 24-JUL-2009.

I figur 10-4 er NULLIF-funksjonen nestet i NVL2-funksjonen. NULLIF-funksjonen bruker i sin tur funksjonene SUBSTR og UPPER som en del av et uttrykk i parameteren ifunequal. E-postkolonnen sammenlignes med dette uttrykket, som returnerer den første bokstaven i fornavnet kombinert med etternavnet for ansatte hvis fornavn er 4 tegn langt. Når disse verdiene er like, vil NULLIF returnere NULL, ellers vil den returnere verdien til ifunequal-parameteren. Disse verdiene brukes som en parameter for NVL2-funksjonen. NVL2 returnerer i sin tur en beskrivelse av om de sammenlignede elementene samsvarte eller ikke.

Figur 10-4 – Bruk av NULLIF-funksjonen

COALESCE-funksjon

COALESCE-funksjonen returnerer den første ikke-NULL-verdien fra parameterlisten. Hvis alle parametere er NULL, returneres NULL. COALESCE-funksjonen har to nødvendige parametere og et hvilket som helst antall valgfrie parametere, og syntaksen er COALESCE(uttr1, uttr2, ..., uttrn) hvor resultatet vil være uttr1 hvis verdien av uttr 1 ikke er NULL, ellers blir resultatet expr2 hvis den ikke er NULL osv. COALESCE er lik i betydning med nestede NVL-funksjoner

COALESCE(uttr1; uttr2) = NVL(uttr1; uttr2)

COALESCE(uttr1; uttr2; uttr3) = NVL(uttr1;NVL(uttr2; uttr3))

Datatypen til den returnerte verdien hvis en ikke-NULL-verdi er funnet, er lik datatypen til den første ikke-NULL-verdien. For å unngå feilen 'ORA-00932: inkonsistente datatyper', må alle ikke-NULL-parametere være kompatible med den første ikke-NULL-parameteren. La oss se på tre eksempler

Spørsmål 1: velg coalesce(null, null, null, 'en streng') fra dual;

Spørring 2: velg coalesce(null, null, null) fra dual;

Spørsmål 3: velg coalesce(substr('abc', 4), 'Ikke bc', 'Ingen understreng') fra dual;

Spørring 1 returnerer den fjerde parameteren: en streng, siden det er den første ikke-NULL-parameteren. Spørring to returnerer NULL fordi alle parametere er NULL. Spørring 3 evaluerer den første parameteren, får NULL-verdien og returnerer den andre parameteren siden det er den første ikke-NULL-parameteren.

NVL2-funksjonsparametrene kan være forvirrende hvis du allerede er kjent med NVL-funksjonen. NVL(original, ifnull) returnerer original hvis verdien ikke er NULL, ellers ifnull. NVL2(original, ifnotnull, ifnull) returnerer ifnotnull hvis originalen ikke er NULL ellers ifnull. Forvirringen kommer fra det faktum at den andre parameteren til NVL-funksjonen er ifnull, mens NVL2-funksjonen er ifnotnull. Så ikke stol på plasseringen av parameteren i funksjonen.

AVKODE-funksjon

DECODE-funksjonen implementerer if-then-else-logikk ved å teste de to første parameterne for likhet og returnere en tredje verdi hvis de er like eller en annen verdi hvis de ikke er like. DECODE-funksjonen har tre nødvendige parametere og syntaksen er DECODE(uttr1, comp1, iftrue1, , ). Disse parameterne brukes som vist i følgende pseudokodeeksempel

IF expr1=comp1 returner deretter iftrue1

Ellers hvis expr1=comp2 returnerer iftrue2

Ellers hvis exprN=compN så returner iftrueN

Else return NULL|iffalse;

Først sammenlignes expr1 med comp1. Hvis de er like, returneres iftrue1. Hvis expr1 ikke er lik comp1, så avhenger hva som skjer videre av om parameterne comp2 og iftrue2 er spesifisert. Hvis gitt, sammenlignes verdien av expr1 med comp2. Hvis verdiene er like, returneres iftrue2. Hvis ikke, hvis det er par med parametere compN, sammenlignes iftrueN, expr1 og compN og, hvis lik, returneres iftrueN. Hvis ingen samsvar ble funnet i noen sett med parametere, returneres enten iffalse hvis denne parameteren ble spesifisert, eller NULL.

Alle parametere i DECODE-funksjonen kan være uttrykk. Typen av returverdien er lik typen til det første validerende elementet - parameteren komp 1. Uttrykk uttr 1 er implisitt konvertert til datatypen til comp-parameteren1. Alle andre tilgjengelige komp parametere 1...kompN er også implisitt konvertert til type komp 1. DECODE behandler en NULL-verdi som lik en annen NULL-verdi, dvs. hvis expr1 er NULL og comp3 er NULL og comp2 ikke er NULL, returneres iftrue3. La oss se på noen få eksempler

Spørsmål 1: velg decode(1234, 123, ‘123 er en match’) fra dual;

Spørsmål 2: velg decode(1234, 123, ‘123 er en match’, ‘No match’) fra dual;

Spørring 3: velg decode('search', 'comp1', 'true1', 'comp2', 'true2', 'search', 'true3', substr('2search', 2, 6), 'true4', ' falsk') fra dual;

Spørring en sammenligner verdien 1234 og 123. Siden de ikke er like, ignoreres iftrue1 og siden verdien iffalse ikke er definert, returneres NULL. Forespørsel to er identisk med anmodning 1, bortsett fra at verdien iffalse er definert. Siden 1234 ikke er lik 123, returnerer den iffalse - "No match". Spørring tre sjekker parameterverdiene for å matche søkeverdien. Parameterne comp1 og comp2 er ikke lik "søk", så resultatene av iftrue1 og iftrue2 hoppes over. Et samsvar er funnet i den tredje sammenligningsoperasjonen av element comp3 (parameterposisjon 6) og verdien av iftrue3 (parameter 7) returneres som er lik 'true3'. Siden et samsvar blir funnet, utføres det ikke flere beregninger. Det vil si at til tross for at verdien til comp4 (parameter 8) også samsvarer med expr1, blir dette uttrykket aldri beregnet siden samsvaret ble funnet i forrige sammenligning.

CASE uttrykk

Alle tredje og fjerde generasjons programmeringsspråk implementerer case-konstruksjonen. I likhet med DECODE-funksjonen lar CASE-uttrykket deg implementere if-then-else logikk. Det er to alternativer for å bruke CASE-uttrykket. Et enkelt CASE-uttrykk setter opp kildeelementet til å sammenligne én gang og viser deretter alle nødvendige testbetingelser. Complex (søkt) CASE evaluerer begge utsagnene for hver tilstand.

CASE-uttrykket har tre nødvendige parametere. Uttrykkets syntaks avhenger av typen. For et enkelt CASE-uttrykk ser det slik ut

CASE search_expr

WHEN comparison_expr1 THEN iftrue1

)

TRUNC-funksjonen returnerer tallet n, avkortet til m desimaler. Parameteren m er kanskje ikke spesifisert; i dette tilfellet er n avkortet til et heltall.

VELG TRUNC(100,25678) X1, TRUNC(-100,25678) X2, TRUNC(100,99) X3,

TRUNC(100,25678; 2) X4

FRA DUAL

Funksjon SIGN(n)

SIGN-funksjonen bestemmer tegnet til et tall. Hvis n er positiv, returnerer funksjonen 1. Hvis n er negativ, returnerer den -1. Hvis lik null, returneres 0. For eksempel:

VELG SIGN(100,22) X1, SIGN(-100,22) X2, SIGN(0) X3

FRA DUAL

Et interessant trekk ved denne funksjonen er muligheten til å overføre m lik null uten å forårsake en divisjon med 0 feil.

Funksjon POWER(n, m)

POWER-funksjonen hever tallet n til potensen m. Graden kan være brøkdel og negativ, noe som betydelig utvider mulighetene til denne funksjonen.

VELG STRØM(10; 2) X1, STRØM(100; 1/2) X2,

POWER(1000; 1/3) X3; POWER(1000; -1/3) X4

FRA DUAL

X1 X2 X3 X4
100 10 10 0,1

I noen tilfeller kan det oppstå et unntak når du kaller denne funksjonen. For eksempel:

VELG STRØM(-100, 1/2) X2

FRA DUAL

I dette tilfellet forsøkes det å beregne kvadratroten av et negativt tall, noe som vil resultere i en ORA-01428 "Argument utenfor rekkevidde"-feil.

Funksjon SQRT(n)

Denne funksjonen returnerer kvadratroten av n. For eksempel:

VELG SQRT(100) X

FRA DUAL

EXP(n) og LN(n) funksjoner

EXP-funksjonen hever e til potensen n, og LN-funksjonen beregner den naturlige logaritmen til n (n må være større enn null). Eksempel:

VELG EXP(2) X1, LN(1) X2, LN(EXP(2)) X3

NVL funksjon

NVL-funksjonen brukes vanligvis oftest. Funksjonen mottar to parametere: NVL(uttr1, uttr2). Hvis den første parameteren expr1 ikke er NULL, returnerer funksjonen verdien. Hvis den første parameteren er NULL, returnerer funksjonen verdien til den andre parameteren expr2 i stedet.

La oss se på et praktisk eksempel. COMM-feltet i EMP-tabellen kan inneholde NULL-verdier. Når du utfører en spørring som:

VELG EMPNO, ENAME, COMM, NVL(COMM, 0) NVL_COMM

FRA SCOTT.EMP

NULL-verdien vil bli erstattet med null. Merk at når en verdi genereres ved hjelp av en funksjon, blir den tildelt et alias. Søkeresultatene vil se slik ut:

EMPNO ENAME KOMM NVL_COMM
7369 SMITH 0
7499 ALLEN 300 300
7521 AVDELING 500 500
7566 JONES 0
7654 MARTIN 1400 1400
7698 BLAKE 0
7782 CLARK 0
7839 KONGE 0
7844 TURNER 0 0
7900 JAMES 0
7902 FORD 0
7934 MILLER 0

Funksjon CEIL(n)

CEIL-funksjonen returnerer det minste heltall som er større enn eller lik tallet n som sendes som en parameter. For eksempel:

VELG CEIL(100) X1, CEIL(-100) X2, CEIL(100.2) X3 , CEIL(-100.2) X4

FRA DUAL

Funksjon TRUNC(n [,m])

TRUNC-funksjonen returnerer tallet n, avkortet til m desimaler. Parameteren m er kanskje ikke spesifisert; i dette tilfellet er n avkortet til et heltall.

VELG TRUNC(100,25678) X1, TRUNC(-100,25678) X2, TRUNC(100,99) X3,

TRUNC(100,25678; 2) X4

FRA DUAL

Funksjon SIGN(n)

SIGN-funksjonen bestemmer tegnet til et tall. Hvis n er positiv, returnerer funksjonen 1. Hvis n er negativ, returnerer den -1. Hvis lik null, returneres 0. For eksempel:

VELG SIGN(100,22) X1, SIGN(-100,22) X2, SIGN(0) X3

FRA DUAL

Et interessant trekk ved denne funksjonen er muligheten til å overføre m lik null uten å forårsake en divisjon med 0 feil.

Funksjon POWER(n, m)

POWER-funksjonen hever tallet n til potensen m. Graden kan være brøkdel og negativ, noe som betydelig utvider mulighetene til denne funksjonen.

VELG STRØM(10; 2) X1, STRØM(100; 1/2) X2,

POWER(1000; 1/3) X3; POWER(1000; -1/3) X4

FRA DUAL

X1 X2 X3 X4
100 10 10 0,1

I noen tilfeller kan det oppstå et unntak når du kaller denne funksjonen. For eksempel:

VELG STRØM(-100, 1/2) X2

FRA DUAL

I dette tilfellet forsøkes det å beregne kvadratroten av et negativt tall, noe som vil resultere i en ORA-01428 "Argument utenfor rekkevidde"-feil.

Funksjon SQRT(n)

Denne funksjonen returnerer kvadratroten av tallet n. For eksempel:

VELG SQRT(100) X

FRA DUAL

EXP(n) og LN(n) funksjoner

EXP-funksjonen hever e til potensen n, og LN-funksjonen beregner den naturlige logaritmen til n (n må være større enn null). Eksempel:

VELG EXP(2) X1, LN(1) X2, LN(EXP(2)) X3

TO_CHAR funksjon med tall

Funksjoner for å konvertere data til andre datatyper. TO_CHAR(tall) konverterer et tall til tekst. TO_NUMBER(streng) konverterer tekst til et tall.

SELECT TO_CHAR (123) FROM DUAL returnerer strengen 123, SELECT TO_NUMBER (`12345") FROM DUAL returnerer tallet 12345.

Laboratoriearbeid. Endre utdatanummerformatet

Endringer i formatet til numeriske verdier i Oracle SQL, TO_CHAR-funksjonen for å arbeide med numeriske verdier.

Trening:

Skriv en spørring som vil vise informasjon om fornavn, etternavn og lønn til ansatte fra hr.ansatte-tabellen i formatet vist i fig. 3,4-1:

Ris. 3.4 -1

I dette tilfellet bør dataene sorteres på en slik måte at radene for ansatte med høyest lønn vises først.

Merk:

Noen lønnsverdier i fig. 3.4-1 har blitt endret, så de er kanskje ikke de samme som verdiene dine.

Løsning:

SELECT first_name AS "First Name", last_name Som "Etternavn", TO_CHAR (LØNN, "L999999999.99") Som "Lønn" FRA hr.ansatte BESTILLE ETTER LØNNDESK.

Funksjoner TO_NUMBER og TO_DATE

Funksjon for å konvertere en streng til en dato TO_DATE (streng, format). Mulige formatverdier er allerede diskutert ovenfor, så jeg vil gi flere eksempler på bruk av denne funksjonen. Eksempler:

PLUKKE UT TO_DATE("01/01/2010", `DD.MM.ÅÅÅÅ") FRA DUAL vil returnere datoen `01/01/2010";

PLUKKE UT TO_DATE("01.JAN.2010", `DD.MÅN.ÅÅÅÅ") FRA DUAL vil returnere datoen `01/01/2009";

PLUKKE UT TO_DATE("15-01-10", `DD-MM-ÅÅ") FRA DUAL vil returnere datoen `01/15/2010».

Funksjon for å konvertere en streng til en numerisk verdi TO_NUMBER (streng, format). De vanligste formatverdiene er oppført i tabellen, så la oss se på bruken av denne funksjonen ved å bruke eksempler. Eksempler:

PLUKKE UT TO_NUMBER(`100") FRA DUAL returnerer tallet 100 SELECT TO_NUMBER (`0010.01", "9999D99") FRA DUAL vil returnere nummeret 10.01;

PLUKKE UT TO_NUMBER("500 000", "999G999") FRA DUAL vil returnere nummeret 500000.

RR-element i datoformat

RR datetime-formatelementet ligner på YY datetime-formatelementet, men det gir ekstra fleksibilitet for lagring av datoverdier i andre århundrer. RR datetime-formatelementet lar 1900-tallsdatoer lagres i det 21. århundre ved å spesifisere bare de to siste sifrene i året.

Hvis de to siste sifrene i gjeldende år er 00 til 49, har det returnerte året de samme to første sifrene som gjeldende år.

Hvis de to siste sifrene i gjeldende år er fra 50 til 99, er de to første sifrene i det returnerte året 1 større enn de to første sifrene i gjeldende år.

Hvis de to siste sifrene i gjeldende år er 00 til 49, er de to første sifrene i det returnerte året 1 mindre enn de to første sifrene i gjeldende år.

Hvis de to siste sifrene i gjeldende år er fra 50 til 99, har det returnerte året de to første sifrene som inneværende år.

NVL funksjon

NVL-funksjonen brukes vanligvis oftest. Funksjonen mottar to parametere: NVL (uttr1, uttr2). Hvis den første parameteren expr1 ikke er NULL, returnerer funksjonen verdien. Hvis den første parameteren er NULL, returnerer funksjonen verdien til den andre parameteren expr2 i stedet.

Eksempel: Velg NVL (supplier_city, n/a") fra leverandører:

SQL-setningen ovenfor vil returnere n/" hvis leverandørby-feltet inneholder en nullverdi. Ellers vil den returnere leverandørby-verdien.

Et annet eksempel på bruk av NVL-funksjonen i Oracle/PLSQL er:

velg leverandør_id, NVL (leverandør_desc, leverandør_navn) fra leverandører.

Denne SQL-setningen kommer tilbake leverandørnavn felt hvis leverandør_desc inneholder en nullverdi. Ellers kommer den tilbake leverandør_desc.

Siste eksempel: Å bruke NVL-funksjonen i Oracle/PLSQL er: velg NVL(provisjon, 0) fra salg;

Denne SQL-setningen returnerte verdien 0 if kommisjon Feltet inneholder en nullverdi. Ellers ville den blitt returnert provisjoner felt.

NVL-konverteringer for ulike datatyper

For å konvertere en nullverdi til en faktisk verdi, bruk NVL-funksjonen: NVL ( uttrykk1, uttrykk2), Hvor:

uttrykk1- Den opprinnelige eller beregnede verdien, som kan være udefinert.

uttrykk2- Verdien som erstattes med den udefinerte verdien.

Merk: NVL-funksjonen kan brukes til å konvertere hvilken som helst datatype, men resultatet vil alltid være samme type som uttrykk1.

NVL konvertering for forskjellige typer:

NUMMER - NVL (numerisk kolonne, 9).

CHAR eller VARCHAR2 - NVL (tegn|kolonne,"Ikke tilgjengelig").

Laboratoriearbeid. Bruke NVL-funksjonen

NVL-funksjon for arbeid med nullverdier i Oracle SQL.

Trening:

Skriv en spørring som viser den ansattes for- og etternavnsinformasjon fra hr.ansatte-tabellen, samt provisjonssatsen (kolonnen COMMISSION_PCT) for den ansatte. I dette tilfellet, for de ansatte som provisjonen ikke er definert for, må verdien 0 vises. Resultatet av forespørselen skal være som vist i fig. 3,5-1.

Ris. 3.5 -1 (verdier vist fra linje 51)

Løsning:

Den tilsvarende forespørselskoden kan være slik:

SELECT first_name AS "First Name", last_name Som "Last Name", NVL (COMMISSION_PCT, 0) Som "Commission Rate" FRA hr.ansatte.




Topp