Nvl sql leírása. NVL konverziók különböző adattípusokhoz

Kicsit korábban érintettük a beágyazott funkciókat, most részletesebben megvizsgáljuk őket. Ezenkívül megvizsgáljuk a NULL értékekkel való munkavégzéshez szükséges függvényeket és a lekérdezésben az elágazási műveletet megvalósító függvényeket.

Beágyazott funkciók

A beágyazott függvények az egyik függvény visszatérési értékét használják bemeneti paraméterként egy másik funkcióhoz. A függvények mindig csak egy értéket adnak vissza. Ezért a függvényhívás eredményét literális értékként kezelheti, ha paraméterként használja egy másik függvény hívására. Az inline függvények beágyazhatók bármilyen fészkelési szintre. Az egyik függvényhívás így néz ki

Funkció1 (paraméter1, paraméter2,…) = eredmény

Ha egy függvényparamétert egy másik függvény hívásával helyettesít, az olyan kifejezéseket eredményezhet, mint

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

A beágyazott függvényeket először kiértékelik, mielőtt azok eredményeit más funkciók bemeneteként használják fel. A funkciók kiértékelése a legmélyebb fészkelési szinttől a legmagasabb fészkelési szintig történik balról jobbra. Az előző kifejezést a következőképpen hajtjuk végre

  1. Az F3 függvényt (param1) kiszámítják, és a visszatérési értéket használják a harmadik paraméterként a 2 funkcióhoz, nevezzük param2 -nek.
  2. Ezután kiszámítja az F2 függvényt (param1, param2.2, param2.3), és a visszatérési értéket használja az F1 függvény második paramétereként - param1.2
  3. Végül az F1 függvény (param1, param2, param1.3) kiértékelésre kerül, és visszakerül a hívó programhoz.

Így az F3 függvény a harmadik fészkelési szinten van.

Fontolja meg a kérést

válassza ki a következő_napot (utolsó_nap (sysdate) -7, 'ked') a kettősből;

  1. Ebben a kérésben három funkció van, alulról felfelé - SYSDATE, LAST_DAY, NEXT_DAY. A kérést a következőképpen hajtják végre
  2. A legtöbb beágyazott SYSDATE függvény kerül végrehajtásra. Visszaadja az aktuális rendszeridőt. Tegyük fel, hogy a jelenlegi dátum 2009. október 28
  3. Ezután kiszámítjuk a LAST_DAY második szintű függvény eredményét. A LAST_DATE ('28 -OCT -2009 ') 2009. október utolsó napját adja vissza, ami 2009. október 31..
  4. Ebből a dátumból hét napot vonnak le - kiderül október 24.
  5. Végül a NEXT_DAY függvény ('24 -OCT-2009 ',' ked ') kiértékelésre kerül, és a lekérdezés október utolsó keddjét adja vissza-ami példánkban 27-OKT-2009.

Elég nehéz megérteni és összetett kifejezéseket létrehozni sok egymásba ágyazott függvényhívás használatával, de ez idővel és gyakorlattal jár. Az ilyen kifejezéseket részekre bonthatja, és külön tesztelheti. A DUAL tábla nagyon hasznos lekérdezések és függvényhívások teszteléséhez. Kipróbálhatja és hibakeresheti a kisméretű összetevőket, amelyek aztán egyetlen nagy, kívánt kifejezéssé egyesíthetők.

Elágazó funkciók

Az elágazó függvények, más néven IF-THEN-ELSE, bizonyos körülmények alapján határozzák meg a végrehajtási útvonalat. Az elágazó függvények különböző eredményeket adnak vissza egy állapot kiértékelésének eredménye alapján. Az ilyen funkciók csoportjában megkülönböztetik a NULL értékkel való munkavégzés funkcióit: NVL, NVL2, NULLIF és COALESCE. És a DECODE függvény és a CASE kifejezés által képviselt közös funkciókat is. A DECODE függvény egy Oracle függvény, míg a CASE kifejezés megtalálható az ANSI SQL szabványban.

NVL funkció

Az NVL függvény teszteli az oszlopok vagy kifejezések bármely adattípusának értékét a NULL számára. Ha az érték NULL, akkor egy alternatív, nem NULL alapértelmezett értéket ad vissza, ellenkező esetben az eredeti érték kerül visszaadásra.

Az NVL függvénynek két kötelező paramétere van, és a szintaxis az NVL (eredeti, ifnull), ahol az eredeti az ellenőrizendő eredeti érték, és az ifnull a függvény által visszaadott eredmény, ha az eredeti NULL. Az ifnull és az eredeti paraméterek adattípusának kompatibilisnek kell lennie. Vagyis vagy az adattípusnak azonosnak kell lennie, vagy lehetővé kell tennie az értékek implicit átalakítását egyik típusból a másikba. Az NVL függvény ugyanazt az adattípust adja vissza, mint az eredeti paraméter adattípusa. Tekintsünk három kérést

1. lekérdezés: válassza ki az nvl (1234) opciót a kettős közül;

2. lekérdezés: válassza ki az nvl (null, 1234) lehetőséget a kettős közül;

3. lekérdezés: válassza ki a duálból az nvl (alstr (‘abc’, 4), ‘Nincs alstringet’);

Mivel az NVL függvény két paramétert igényel, az 1. lekérdezés ORA-00909: érvénytelen számú argumentum hibát ad vissza. A 2. lekérdezés 1234 értéket ad vissza, mivel a NULL be van jelölve, és NULL. A harmadik lekérdezés egy beágyazott SUBSTR függvényt használ, amely megpróbálja kinyerni a negyedik karaktert egy három karakterből álló karakterláncból, visszaadja a NULL értéket, az NVL függvény pedig a „Nincs sbustring létezik” karakterláncot.

Az NVL funkció nagyon hasznos számokkal való munka során. A NULL értékek 0 -ra való konvertálására szolgál számtani műveletek a több szám nem adta vissza a NULL értéket

NVL funkció2

Az NVL2 több funkciót nyújt, mint az NVL, de kezeli a NULL értékeket is. Bármilyen típusú oszlop vagy kifejezés értékét teszteli a NULL számára. Ha az érték nem NULL, akkor a második paraméter kerül visszaadásra, ellenkező esetben a harmadik paraméter kerül visszaadásra, ellentétben az NVL függvénnyel, amely ebben az esetben az eredeti értéket adja vissza.

Az NVL2 függvénynek három kötelező paramétere van, és az NVL2 szintaxis (eredeti, ifnotnull, ifnull), ahol az eredeti az ellenőrizendő érték, az ifnotnull a visszaadott érték, ha az eredeti nem NULL, és az ifnull a visszaadott érték, ha az eredeti NULL. Az ifnotnull és ifnull paraméterek adattípusainak kompatibilisnek kell lenniük, és nem lehetnek LONG típusúak. Az NVL2 függvény által visszaadott adattípus megegyezik az ifnotnull paraméter adattípusával. Nézzünk néhány példát

1. lekérdezés: válassza ki az nvl2 -t (1234, 1, 'karakterlánc') a kettősből;

2. lekérdezés: válassza ki az nvl2 (null, 1234, 5678) lehetőséget a kettős közül;

3. lekérdezés: válassza ki a duálból az nvl2 (substr (‘abc’, 2), “Not bc”, “No substring”) lehetőséget;

Az ifnotnull paraméter az 1. lekérdezésben egy szám, az ifnull paraméter pedig egy karakterlánc. Mivel az adattípusok nem kompatibilisek, az „ORA-01722: érvénytelen szám” hibaüzenet jelenik meg. A második kérés az ifnull paramétert adja vissza, mivel az eredeti NULL, az eredmény pedig 5678. A harmadik kérés a SUBSTR függvényt használja, amely visszaadja a „bc” értéket, és meghívja az NVL2 -t („bc”, „Not bc”, „No substring”) - amely az ifnotnull paraméter - 'Nem bc'.

NULLIF funkció

A NULLIF függvény két értéket tesztel. Ha megegyeznek, akkor a NULL érték kerül visszaadásra, ellenkező esetben az első paraméter kerül visszaadásra. A NULLIF függvény két kötelező paraméterrel és a NULLIF szintaxissal rendelkezik (ifunequal, összehasonlítás_elem). A függvény két paramétert hasonlít össze, és ha azonosak - a NULL értéket adja vissza, ellenkező esetben az ifunequal paramétert. Fontolja meg a kéréseket

1. lekérdezés: nullif (1234, 1234) kiválasztása kettősből;

Az első lekérdezés NULL értéket ad vissza, mert a paraméterek azonosak. A 2. lekérdezés karakterláncai nem dátumra konvertálódnak, hanem karakterláncként vannak összehasonlítva. Mivel a karakterláncok különböző hosszúságúak, az ifunequal 24-JUL-2009 visszaadásra kerül.

A 10-4. Ábrán a NULLIF függvény beágyazódik az NVL2 függvénybe. A NULLIF függvény viszont a SUBSTR és UPPER függvényeket használja az ifunequal paraméter kifejezésének részeként. Az EMAIL oszlopot ehhez a kifejezéshez hasonlítják, amely a vezetéknévvel összefűzött keresztnév első betűjét adja vissza azoknak az alkalmazottaknak, akiknek a keresztneve 4 karakter hosszú. Ha ezek az értékek egyenlők, a NULLIF NULL értéket ad vissza, az érték pedig az ifunequal paraméter értékét. Ezeket az értékeket az NVL2 funkció paramétereként használják. Az NVL2 viszont leírást ad vissza arról, hogy az összehasonlított tételek egyeztek -e vagy sem.

10-4. Ábra - A NULLIF funkció használata

COALESCE függvény

A COALESCE függvény a paraméterlista első NULL értékét adja vissza. Ha minden paraméter NULL, akkor a NULL kerül visszaadásra. A COALESCE függvénynek két kötelező paramétere és annyi opcionális paramétere van, amennyit csak akar, és a COALESCE szintaxisa (expr1, expr2, ..., exprn), ahol az eredmény expr1, ha expr nem NULL, ellenkező esetben expr2 kerül visszaadásra, ha nem NULL, és így tovább. A COALESCE egyenlő a beágyazott NVL függvényekkel

COALESCE (expr1, expr2) = NVL (expr1, expr2)

COALESCE (expr1, expr2, expr3) = NVL (expr1, NVL (expr2, expr3))

A visszatérési érték adattípusa, ha nem NULL értéket talál, megegyezik az első nem NULL érték adattípusával. Az „ORA-00932: inkonzisztens adattípusok” hiba elkerülése érdekében minden nem NULL paraméternek kompatibilisnek kell lennie az első nem NULL paraméterrel. Nézzünk három példát

1. lekérdezés: válassza ki az összefogást (null, null, null, 'string') a kettősből;

2. lekérdezés: válassza az összefogást (null, null, null) a kettősből;

3. lekérdezés: válassza ki a coalesce -t (substr (‘abc’, 4), ‘Not bc’, ‘No substring’) a kettősből;

Az 1. lekérdezés a negyedik paramétert adja vissza: egy karakterláncot, mivel ez az első nem NULL paraméter. A második lekérdezés NULL értéket ad vissza, mert minden paraméter NULL. A 3. lekérdezés kiértékeli az első paramétert, kap egy NULL értéket, és visszaadja a második paramétert, mivel ez az első nem NULL paraméter.

Az NVL2 funkció paraméterei zavaróak lehetnek, ha már ismeri az NVL funkciót. Az NVL (eredeti, ifnull) eredeti értéket ad vissza, ha az érték nem NULL, ellenkező esetben ifnull. Az NVL2 (eredeti, ifnotnull, ifnull) az ifnotnull értéket adja vissza, ha az eredeti nem NULL, különben ifnull. A zavart az okozza, hogy az NVL függvény második paramétere az ifnull, míg az NVL2 -ben az ifnotnull. Tehát ne hagyatkozzon a paraméter pozíciójára a függvényben.

DECODE funkció

A DECODE függvény az if-then-else logikát valósítja meg azáltal, hogy ellenőrzi az első két paraméter egyenlőségét, és visszaadja a harmadik értéket, ha egyenlők, vagy egy másik értéket, ha nem egyenlők. A DECODE függvénynek három szükséges paramétere és a DECODE szintaxisa van (expr1, comp1, iftrue1 ,,). Ezeket a paramétereket a következő pszeudokód példában látható módon használjuk

HA expr1 = comp1, akkor adjon vissza iftrue1

Ellenkező esetben, ha expr1 = comp2, akkor adjon vissza iftrue2

Különben, ha exprN = compN, akkor adja vissza az iftrueN értéket

Különben visszatér NULL | iffalse;

Először is az expr1 -et összehasonlítják a comp1 -el. Ha egyenlők, akkor az igaz1 értéket adja vissza. Ha az expr1 nem egyenlő a comp1 -el, akkor a következő lépés attól függ, hogy a comp2 és iftrue2 paraméterek meg vannak -e adva. Ha megadjuk, az expr1 értékét összehasonlítjuk a comp2 értékkel. Ha az értékek egyenlők, akkor az iftrue2 értéket adja vissza. Ha nem, akkor ha vannak pár compN, iftrueN, expr1 és compN paraméterpárok, és összehasonlítja az iftrueN paramétert, ha egyenlő. Ha egyik paraméterkészlet sem talált egyezést, akkor vagy az iffalse értéket adja vissza, ha ezt a paramétert megadta, vagy a NULL értéket.

A DECODE függvény minden paramétere lehet kifejezés. A visszatérési típus megegyezik az első érvényesítő elem - a paraméter - típusával comp 1. Kifejezés expr Az 1. ábra implicit módon konvertálható a comp paraméter adattípusára1. Minden egyéb rendelkezésre álló comp opció 1 ... össz szintén implicit módon konvertálható comp -re 1. A DECODE a NULL értéket egyenlőnek tekinti egy másik NULL értékkel, azaz ha a kifejezés 1 NULL, a comp3 pedig NULL, és a comp2 nem NULL, akkor az iftrue3 értéket adja vissza. Nézzünk néhány példát

1. lekérdezés: válassza ki a dekódolást (1234, 123, '123 is egyezés') a kettősből;

2. lekérdezés: válassza a dekódolást (1234, 123, '123 is match', 'No match') a kettősből;

3. lekérdezés: válassza a dekódolást ('keresés', 'komp1', 'igaz1', 'komp2', 'igaz2', 'keresés', 'igaz3', alstruktúra ('2 keresés', 2, 6), 'igaz4', ' hamis ') kettősből;

Az első lekérdezés összehasonlítja az 1234 és 123 értékeket. Mivel ezek nem egyenlők, az iftrue1 figyelmen kívül marad, és mivel nincs megadva hamis érték, a NULL értéket adja vissza. A második kérés azonos az 1 -es kéréssel, kivéve, hogy az iffalse van megadva. Mivel az 1234 nem egyenlő 123 -mal, akkor az iffalse - „Nincs egyezés” kerül visszaadásra. Három kérés ellenőrzi a paraméterértékeket, hogy lássa, megfelelnek -e a keresési értéknek. A comp1 és comp2 paraméterek nem egyenlőek a „kereséssel”, ezért az iftrue1 és iftrue2 eredményeket kihagyjuk. Az egyezés megtalálható a comp3 harmadik összehasonlításában (6. paraméterpozíció), és az iftrue3 visszatérési értéke (7. paraméter) „true3”. Mivel talált egyezést, további számításokat nem végeznek. Vagyis annak ellenére, hogy a comp4 (8. paraméter) értéke is megegyezik az 1. kifejezéssel, ez a kifejezés soha nem kerül kiszámításra, mivel az előző összehasonlításban egyezést találtunk.

CASE kifejezés

Minden harmadik és negyedik generációs programozási nyelv megvalósítja a tok konstrukciót. A DECODE függvényhez hasonlóan a CASE kifejezés lehetővé teszi az if-then-else logika megvalósítását. A CASE kifejezés használatára két lehetőség van. Egy egyszerű CASE kifejezés beállítja a forrást, amelyet egyszer össze kell hasonlítani, majd felsorolja az összes szükséges tesztfeltételt. A keresett CASE mindkét feltételt értékeli minden feltételre.

A CASE kifejezésnek három kötelező paramétere van. A kifejezés szintaxisa típusfüggő. Egy egyszerű CASE kifejezés esetében ez így néz ki

CASE search_expr

MIKOR összehasonlítás_kifejezés1 AKKOR iftrue1

)

A TRUNC függvény az n számot adja vissza, m tizedesjegyig csonkítva. Az m paraméter elhagyható - ebben az esetben az n egész számra van csonkolva.

SELECT TRUNC (100.25678) X1, TRUNC (-100.25678) X2, TRUNC (100.99) X3,

TRUNC (100.25678, 2) X4

KETTŐTŐL

SIGN (n) függvény

A SIGN függvény határozza meg a szám előjelét. Ha n pozitív, a függvény 1 -et ad vissza. Ha n negatív, akkor -1 -et adunk vissza. Ha nulla, akkor 0 -t ad vissza. Például:

JEL KIVÁLASZTÁSA (100.22) X1, JEL (-100.22) X2, JEL (0) X3

KETTŐTŐL

Ennek a funkciónak egy érdekes tulajdonsága, hogy képes m -et nullával átadni - ebben az esetben nincs osztás 0 -val.

POWER (n, m) függvény

A POWER funkció az n teljesítményt emeli m teljesítményre. A fok lehet tört vagy negatív, ami jelentősen kibővíti ennek a funkciónak a képességeit.

TELJESÍTMÉNY (10, 2) X1, TELJESÍTMÉNY (100, 1/2) X2,

TELJESÍTMÉNY (1000, 1/3) X3, TELJESÍTMÉNY (1000, -1/3) X4

KETTŐTŐL

X1 X2 X3 X4
100 10 10 0,1

Bizonyos esetekben a funkció hívásakor kivétel fordulhat elő. Például:

TELJESÍTMÉNY KIVÁLASZTÁSA (-100, 1/2) X2

KETTŐTŐL

V ez az eset megpróbálják kiszámítani a negatív szám négyzetgyökét, ami az ORA-01428 "Argument out of range" hibát eredményezi.

SQRT (n) függvény

Ez a funkció visszatér Négyzetgyök az n számból. Például:

SQRT (100) kiválasztása X

KETTŐTŐL

EXP (n) és LN (n) függvények

Az EXP függvény az n értékére emeli az e értéket, az LN függvény pedig kiszámítja n természetes logaritmusát (ahol n nullánál nagyobbnak kell lennie). Példa:

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

TO_CHAR függvény számokkal

Funkciók az adatok más adattípusokká konvertálására. A TO_CHAR (szám) számot alakít át szöveggé. A TO_NUMBER (karakterlánc) szöveget számmá alakít.

SELECT TO_CHAR (123) FROM DUAL visszatér 12345, SELECT TO_NUMBER (`12345") FROM DUAL pedig 12345.

Laboratóriumi munka. A megjelenített számok formátumának megváltoztatása

Változások a számértékek formátumában az Oracle SQL -ben, a TO_CHAR függvény a numerikus értékekkel való munkához.

Gyakorlat:

Írjon lekérdezést, amely megjeleníti az alkalmazottak kereszt-, vezeték- és fizetési adatait a hr.employees táblázatból az 1. ábrán látható formátumban. 3.4-1:

Rizs. 3.4 -1

Ebben az esetben az adatokat úgy kell rendezni, hogy az első sorok a legmagasabb fizetéssel rendelkező munkavállalók számára jelenjenek meg.

Jegyzet:

Ábra néhány fizetési értékét. 3.4-1 változtak, ezért előfordulhat, hogy nem egyeznek az Ön értékeivel.

Megoldás:

Válassza ki a keresztnevet "Keresztnévként", vezetéknévként "Vezetéknévként", TO_CHAR (BÉR, "L999999999.99") "Fizetésként" FROM hr. alkalmazottak RENDELÉS BÉRLETI DESC.

TO_NUMBER és TO_DATE függvények

Funkció egy karakterlánc TO_DATE dátummá alakítására (karakterlánc, formátum). A lehetséges formátumértékeket már fentebb tárgyaltuk, ezért több példát is hozok e funkció használatára. Példák:

SELECT TO_DATE ("2010. 01. 01.", `NN.HH.ÉÉÉÉ") TÓL TŐL A DUAL visszaadja a dátumot `01.01.2010";

SELECT TO_DATE ("01.JAN.2010", `NN.HV.ÉÉÉÉ") TÓL TŐL A DUAL visszaadja a dátumot `01.01.2009 ';

SELECT TO_DATE ("15-01-10", `DD-MM-YY") TÓL TŐL A DUAL visszaadja a dátumot "01/15/2010".

Funkció egy karakterlánc TO_NUMBER (karakterlánc, formátum) numerikus értékké konvertálására. A táblázatban felsoroljuk a leggyakoribb formátumértékeket, ezért nézzük példákon keresztül ennek a funkciónak a használatát. Példák:

SELECT TO_NUMBER (`100") TÓL TŐL A DUAL visszaadja a 100 SELECT TO_NUMBER számot (`0010.01", "9999D99") TÓL TŐL A DUAL a 10.01 számot adja vissza;

SELECT TO_NUMBER ("500 000", "999G999") TÓL TŐL A DUAL 500 000 -et ad vissza.

RR elem dátumformátumban

Az RR dátum és idő formátum elem hasonló az YY dátum és idő formátum elemhez, de további rugalmasságot biztosít a dátumértékek más évszázadokban történő tárolásához. Az RR dátum és idő formátum elem lehetővé teszi a 20. század és a 21. század közötti dátumok tárolását az év utolsó két számjegyének megadásával.

Ha az aktuális év utolsó két számjegye 00 és 49 között van, akkor a visszaadott évnek ugyanaz az első két számjegye, mint az aktuális évnek.

Ha a tárgyév utolsó két számjegye 50 és 99 között van, akkor a visszaadott év első 2 számjegye 1 -gyel nagyobb, mint a tárgyév első 2 számjegye.

Ha a tárgyév utolsó két számjegye 00 és 49 között van, akkor a visszaadott év első 2 számjegye 1 -gyel kevesebb, mint a tárgyév első 2 számjegye.

Ha a tárgyév utolsó két számjegye 50 és 99 között van, akkor a visszaadott év ugyanaz az első két számjeggyel rendelkezik, mint az aktuális év.

NVL funkció

Általában az NVL funkciót használják a leggyakrabban. A függvénynek két paramétere van: NVL (expr1, exp2). Ha az expr1 első paramétere nem NULL, akkor a függvény visszaadja az értékét. Ha az első paraméter NULL, akkor a függvény a második exp2 paraméter értékét adja vissza.

Példa: Válassza ki az NVL -t (szállító_város, n / a ") a beszállítóktól:

A fenti SQL utasítás n / "értéket ad vissza, ha a szállító_város mező értéke nulla, ellenkező esetben a szállító_város értéket adja vissza.

Egy másik példa az NVL funkció használatára az Oracle / PLSQL -ben:

válassza ki a szállítóazonosítót, az NVL -t (szállító_desk, szállító_neve) a beszállítóktól.

Ez az SQL utasítás visszatér Szállító neve mező, ha szállító_desc null értéket tartalmaz. Ellenkező esetben visszatér szállító_desc.

Egy utolsó példa: az NVL funkció használata az Oracle / PLSQL -ben: válassza ki az NVL -t (jutalék, 0) az értékesítésből;

Ez az SQL utasítás 0 -t adott vissza, ha jutalék a mező null értéket tartalmaz. Ellenkező esetben visszatérne jutalék terület.

NVL konverziók különböző adattípusokhoz

Az NVL funkciót egy nem definiált érték tényleges értékké alakítására használják: NVL ( kifejezés 1, kifejezés 2), ahol:

kifejezés 1- Az eredeti vagy számított érték, amely lehet, hogy nem definiált.

kifejezés2- A nem definiált értéket helyettesítő érték.

Jegyzet: Az NVL funkció bármilyen adattípus konvertálására használható, de az eredmény mindig ugyanaz lesz, mint a kifejezés1.

NVL átalakítása különböző típusokhoz:

SZÁM - NVL (numerikus oszlop, 9).

CHAR vagy VARCHAR2 - NVL (szimbólumok | oszlop,"Nem elérhető").

Laboratóriumi munka. Az NVL funkció alkalmazása

NVL funkció nulla értékekkel való munkához az Oracle SQL -ben.

Gyakorlat:

Írjon lekérdezést, amely információkat jelenít meg a hr.employees táblázat alkalmazottainak kereszt- és vezetéknevéről, valamint a munkavállaló jutalékát (COMMISSION_PCT oszlop). Ebben az esetben azoknak az alkalmazottaknak, akiknél a jutalék nincs meghatározva, a 0. értéket kell megjelenítenie. A lekérdezés eredményének meg kell egyeznie az ábrával. 3.5-1.

Rizs. 3.5 -1 (az 51. sorban kezdődő értékeket mutatja)

Megoldás:

A megfelelő kérési kód a következő lehet:

Válassza ki a keresztnevet „Keresztnévként”, vezetéknévként „Vezetéknévként”, NVL (COMMISSION_PCT, 0) „Jutalékdíjként” FROM hr.employees.

NVL funkció

Általában az NVL funkciót használják a leggyakrabban. A függvénynek két paramétere van: NVL (expr1, expr2). Ha az expr1 első paramétere nem NULL, akkor a függvény visszaadja az értékét. Ha az első paraméter NULL, akkor a függvény a második expr2 paraméter értékét adja vissza.

Fontolgat gyakorlati példa... Az EMP táblázat COMM mezője NULL értékeket tartalmazhat. Ilyen lekérdezés végrehajtásakor:

EMPNO, ENAME, COMM, NVL (COMM, 0) NVL_COMM kiválasztása

A SCOTT.EMP

a NULL érték helyett nulla lesz. Vegye figyelembe, hogy ha egy függvény használatával hoz létre értéket, akkor álnevet rendel hozzá. A lekérdezés eredménye így fog kinézni:

EMPNO ENAME COMM NVL_COMM
7369 KOVÁCS 0
7499 ALLEN 300 300
7521 WARD 500 500
7566 JONES 0
7654 MÁRTON 1400 1400
7698 BLAKE 0
7782 CLARK 0
7839 KIRÁLY 0
7844 ESZTERGÁLYOS 0 0
7900 JAMES 0
7902 FORD 0
7934 MOLNÁR 0

CEIL (n) függvény

A CEIL függvény a legkisebb egész számot adja vissza, amely nagyobb vagy egyenlő, mint a paraméterként megadott n szám. Például:

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

KETTŐTŐL

TRUNC függvény (n [, m])

A TRUNC függvény az n számot adja vissza, m tizedesjegyig csonkítva. Az m paraméter elhagyható - ebben az esetben az n egész számra van csonkolva.

SELECT TRUNC (100.25678) X1, TRUNC (-100.25678) X2, TRUNC (100.99) X3,

TRUNC (100.25678, 2) X4

KETTŐTŐL

SIGN (n) függvény

A SIGN függvény határozza meg a szám előjelét. Ha n pozitív, a függvény 1 -et ad vissza. Ha n negatív, akkor -1 -et adunk vissza. Ha nulla, akkor 0 -t ad vissza. Például:

JEL KIVÁLASZTÁSA (100.22) X1, JEL (-100.22) X2, JEL (0) X3

KETTŐTŐL

Ennek a funkciónak egy érdekes tulajdonsága, hogy képes m -et nullával átadni - ebben az esetben nincs osztás 0 -val.

POWER (n, m) függvény

A POWER funkció az n teljesítményt emeli m teljesítményre. A fok lehet tört vagy negatív, ami jelentősen kibővíti ennek a funkciónak a képességeit.

TELJESÍTMÉNY (10, 2) X1, TELJESÍTMÉNY (100, 1/2) X2,

TELJESÍTMÉNY (1000, 1/3) X3, TELJESÍTMÉNY (1000, -1/3) X4

KETTŐTŐL

X1 X2 X3 X4
100 10 10 0,1

Bizonyos esetekben a funkció hívásakor kivétel fordulhat elő. Például:

TELJESÍTMÉNY KIVÁLASZTÁSA (-100, 1/2) X2

KETTŐTŐL

Ebben az esetben megpróbálják kiszámítani a negatív szám négyzetgyökét, ami az ORA-01428 "Argument out of range" hibát eredményezi.

SQRT (n) függvény

Ez a függvény az n négyzetgyökét adja vissza. Például:

SQRT (100) kiválasztása X

KETTŐTŐL

EXP (n) és LN (n) függvények

Az EXP függvény az n értékére emeli az e értéket, az LN függvény pedig kiszámítja n természetes logaritmusát (ahol n nullánál nagyobbnak kell lennie). Példa:

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