Bruke betinget Expressions


Generelle funksjoner

Generelle funksjonene brukes til å håndtere NULL-verdier i databasen. Målet med de generelle NULL håndtering funksjoner er å erstatte NULL verdier med en alternativ verdi. Vi skal kort se gjennom disse funksjonene nedenfor.

NVL

NVL funksjonen erstatter en alternativ verdi for en nullverdi.

Syntax:
NVL (Arg1, replace_with)

I syntaks, begge parametrene er obligatoriske. Merk at NVL funksjonen fungerer med alle typer datatyper. Og også at datatypen opprinnelige strengen og utskifting må være kompatibel tilstand dvs. enten samme eller implisitt konvertible av Oracle.

Hvis arg1 er en tegnverdi, deretter oracle konverterer erstatningsstrengen til datatype kompatibel med arg1 før sammenligne dem og returnerer VARCHAR2 i karakter sett expr1. Hvis arg1 er numerisk, da Oracle bestemmer argumentet med høyest numerisk forrang, implisitt konverterer den andre argument til at datatype, og returnerer den datatypen.

SELECT-setningen nedenfor vil vise 'n /a' hvis en arbeidstaker har ikke blitt tildelt noen jobb ennå dvs. JOB_ID er NULL. Ellers ville det vise den faktiske JOB_ID verdi
SELECT FIRST_NAME, NVL (JOB_ID, 'n /a') Fra ansatte;.
NVL2

Som en forbedring i løpet av NVL, Oracle innført en funksjon for å erstatning verdi ikke bare for NULL kolonner verdier, men også for NOT NULL kolonner. NVL2 funksjonen kan brukes til å erstatte en alternativ verdi for NULL, så vel som ikke-nullverdi.

Syntax:
NVL2 (streng1, value_if_NOT_null, value_if_null)

SELECT-setningen nedenfor vil vise "Bench» hvis JOB_CODE for en ansatt er NULL. For et klart ikke nullverdi av jobbkode, ville det vise seg konstant verdi 'Job Assigned'
SQL> SELECT NVL2 (JOB_CODE, 'Job Assigned', 'Benk') Fra ansatte;.
NULLIF
< p> NULLIF funksjonen sammenligner to argumenter expr1 og expr2. Hvis expr1 og expr2 er like, returnerer den NULL; annet, returnerer den expr1. I motsetning til andre null håndtering funksjon, kan første argumentet ikke være NULL

Syntax.
NULLIF (expr1, expr2)

Legg merke til at første argument kan være et uttrykk som evalueres til NULL, men det kan ikke være den bokstave NULL. Begge parametrene er obligatoriske for funksjonen til å utføre

under søket returnerer NULL siden begge inngangsverdiene, 12 er like
VELG NULLIF (12, 12) Fra DUAL;..

På samme måte Nedenfor spør return 'sø' siden begge strengene er ikke lik
SELECT NULLIF ('sø', 'MOON') FROM DUAL;.
COALESCE

COALESCE funksjon, en mer generisk form av NVL returnerer den første ikke-null uttrykk i argumentlisten. Det tar minimum to obligatoriske parametre, men maksimalt argumenter har ingen grense

Syntax.
COALESCE (expr1, expr2, ... expr_n)

Tenk nedenfor SELECT spørringen. Det velger det første ikke nullverdi matet inn adressefelt for en ansatt
VELG koaleserer (Adresse 1, Address2, address3) AddressFROM ansatte;.

Interessant, er arbeider av COALESCE funksjon som ligner IF..ELSIF..ENDIF konstruere. Spørringen ovenfor kan omskrevet som -
IF Adresse 1 er ikke null da resultere: = Adresse 1; ELSIF Address2 er ikke null da resultere: = Address2; ELSIF address3 er ikke null da resultere: = address3; ELSE resultat: = null; END IF;
Betinget Funksjoner

Oracle gir betinget funksjoner dekode og CASE å stille vilkår selv i SQL-setning

Den AVKODE funksjon

Funksjonen er. SQL likeverdighet av IF..THEN..ELSE betinget prosessuelle uttalelse. DEKODING fungerer med verdier /søyler /uttrykk av alle typer data

Syntax.
AVKODE (uttrykk, søk, resultere [, søk, resultatet] ... [, standard])

AVKODE funksjon sammen uttrykk mot hverandre søkeverdi i orden. Hvis likestilling eksisterer mellom uttrykk og søk argument, da den returnerer den tilsvarende resultat. Ved manglende kamp, ​​er standardverdien tilbake, hvis definert, ellers NULL. Ved alle typer kompatibilitet mismatch, internt gjør oracle mulig implisitt konvertering å returnere resultatene.

Som et spørsmål om faktum, mener Oracle to nuller til å være tilsvarende mens du arbeider med AVKODE funksjon.
VELG AVKODE ( NULL, NULL, 'EQUAL', 'ikke lik') FROM DUAL; DECOD ----- EQUAL

Hvis uttrykket er null, da Oracle returnerer resultatet av det første søket som også er null. Det maksimale antall komponenter i AVKODE funksjonen er 255.
Velg FIRST_NAME, lønn, dekode (hire_date, SYSDATE, 'NEW JOINEE', 'ANSATTE') Fra ansatte;
CASE uttrykk

CASE uttrykk fungerer på samme konsept som AVKODE men skiller i syntaks og bruk

Syntax.
CASE [uttrykk] NÅR condition_1 SÅ result_1 NÅR condition_2 SÅ result_2 ... NÅR condition_n THEN result_n ELSE resultEND

Oracle Søket starter fra venstre og flytter mot høyre til den finner en ekte tilstand, og deretter fortsetter resultere uttrykk knyttet til den. Hvis ingen betingelse er funnet å være sant, og en ELSE klausulen eksisterer, da Oracle avkastning resultat definert med andre. Ellers Oracle returnerer null.

Det maksimale antall argumenter i et CASE-uttrykk er 255. Alle uttrykk telle mot denne grensen, inkludert den første uttrykk for en enkel CASE-uttrykk og den valgfrie ELSE uttrykk. Hver NÅR ... SÅ pare teller som to argumenter. For å unngå å overskride denne grensen, kan du reir CASE-uttrykk slik at return_expr seg selv er et CASE-uttrykk.
SELECT FIRST_NAME, CASE NÅR lønn <200 THEN 'GRADE en' NÅR lønn> 200 og lønn <5000 THEN 'GRADE 2' ELSE 'GRADE 3' END CASEFROM ansatte; ENAM CASE ---- ------- JOHN GRADE 2EDWIN GRADE 3KING GRADE en