SQL sorfüggvények. Copyright 2004, Oracle. All rights reserved.

Hasonló dokumentumok
SQL-függvények. Input. Output. Függvény. A függvény végrehajtja a műveletet Az eredmény értéke. arg 1. arg 2. arg n

Célkitűzés Különböző típusú SQL sorfüggvények megismerése

Lekérdezések az SQL SELECT utasítással. Copyright 2004, Oracle. All rights reserved.

Az Oracle leggyakrabban használt függvényei

Lekérdezések az SQL SELECT utasítással

az n kódú karakter az adott kódkészletben CONCAT(str, str) LOWER(str) UPPER(str) INITCAP(str)

Csoportosított adatok megjelenítése összesítı függvények használatával. Copyright 2004, Oracle. All rights reserved.

Adatok szűrése, rendezése

Lekérdezések az SQL SELECT utasítással

Tranzakciókezelés PL/SQL-ben

Adatbázis használat I. 2. gyakorlat

Az SQL*Plus használata

Csomag. Adatbázis-objektum Programozási eszközök gyűjteménye Két részből áll. specifikáció törzs (opcionális)

Karakterkészlet. A kis- és nagybetűk nem különböznek, a sztringliterálok belsejét leszámítva!

Statisztikai szoftverek Molnár Gábor József

Statisztikai függvények

Adatbázis Rendszerek I. 10. SQL alapok (DML esettanulmány)

Adatbáziskezelés. SQL parancsok. Függvények

Több tábla összekapcsolásán alapuló lekérdezések. Copyright 2004, Oracle. All rights reserved.

Az indexelés újdonságai Oracle Database 12c R1 és 12c R2

Bevezetés: az SQL-be

Adatbázis Rendszerek II. 3. SQL alapok

SQL haladó. Külső összekapcsolások, Csoportosítás/Összesítés, Beszúrás/Törlés/Módosítás, Táblák létrehozása/kulcs megszorítások

Adatbázisok. 8. gyakorlat. SQL: CREATE TABLE, aktualizálás (INSERT, UPDATE, DELETE), SELECT október október 26. Adatbázisok 1 / 17

SQL*Plus. Felhasználók: SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP (dolgozó), DEPT (osztály) "közönséges" felhasználók

Együttes hozzárendelés

2007. február 25. TARTALOM

Adatbázis használat I. 2. gyakorlat

Adatbázis használat I. 5. gyakorlat

ONE TWO THREE FOUR FIVE SIX SEVEN EIGHT NINE TEN

ADATBÁZISOK gyakorlat: SQL 2. rész SELECT

Készítette: Szabóné Nacsa Rozália

Tábla létrehozása: CREATE TABLE alma( ID INT( 3 ) NOT NULL PRIMARY KEY, Leiras VARCHAR( 100 ) );

Tartalomjegyzék. Tartalomjegyzék 1. Az SQL nyelv 1 Az SQL DDL alapjai 2

Adatbázis-lekérdezés. Az SQL nyelv. Makány György

WHERE záradék (további lehetıségek) SQL specialitások, nem írhatók át relációs algebrába: LIKE. NULL értékek. Az ismeretlen (unknown) igazságérték

Java II. I A Java programozási nyelv alapelemei

A trigger egy aktualizálási művelet esetén végrehajtandó programrészletet definiál. Alakja:

ORACLE. SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP (dolgozó), DEPT (osztály) "közönséges" felhasználók

Szövegek C++ -ban, a string osztály

Az SQL adatbázisnyelv: DML

BASH SCRIPT SHELL JEGYZETEK

Adatbázisok II. Jánosi-Rancz Katalin Tünde 327A

Többtáblás lekérdezések megjelenítése

Informatikai képzés Információs rendszerek dr. Hajas Csilla (ELTE IK)

IBAN: INTERNATIONAL BANK ACCOUNT NUMBER. I. Az IBAN formái

Felhasználó által definiált adattípus

Elemi alkalmazások fejlesztése IV.

PL/SQL (folytatás) Kurzorok, függvények, eljárások

Mapping Sequencing Reads to a Reference Genome

dr.xlsx A programról Szövegműveletekhez használható függvények

INTEGER egész típusú érték megadása, hozzá hasonló, de számábrázolási tartományában eltérő típus még a SMALLINT, szinonimája a DECIMAL

SQL. Táblák összekapcsolása lekérdezéskor Aliasok Allekérdezések Nézettáblák

B I T M A N B I v: T M A N

Több tábla összekapcsolásán alapuló lekérdezések

Paraméteres-, összesítı- és módosító lekérdezések

A relációs adatbáziskezelés szabványos nyelve Két fő csoportba sorolhatók az utasításai

Adatbázis Rendszerek I. 9. SQL alapok (DDL esettanulmány)

SQL. 1.rész. 1.elıadás // Adatbázisok-1 elıadás // Ullman-Widom (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 1

B IT MAN 65/1. Adatbázis Rendszerek II. Ellenőrző kérdések APLSQL B IT MAN. v:

SQL DDL-1: táblák és megszorítások

8. Gyakorlat SQL. DDL (Data Definition Language) adatdefiníciós nyelv utasításai:

SQL ALAPOK. Bevezetés A MYSQL szintaxisa Táblák, adatok kezelésének alapjai

Adatbázis használat I. 1. gyakorlat

Egyéni számformátum létrehozása és törlése - Excel

Programok értelmezése

PL/SQL blokk. [címke] [DECLARE deklarációs utasítás(ok)] BEGIN végrehajtható utasítás(ok) [EXCEPTION kivételkezelő] END [név];

Adattípusok. Max. 2GByte

BUJDOSÓ GYÖNGYI. Bevezetés az SQL-be OKTATÁSI SEGÉDANYAG AZ ADATBÁZISKEZELÉS CÍMŰ GYAKORLATHOZ DEBRECENI EGYETEM INFORMATIKAI KAR

Kilencedik témakör: Lazarus-Firebird. Készítette: Dr. Kotsis Domokos

Széchenyi István Egyetem

Java és web programozás

ADATBÁZISOK I. Az esetleges hibákat kérlek a csongor@csongorbokay.com címen jelezd! Utolsó módosítás: március 20.

SQL- Utasítások csoportosítása Definíció: DDL: - objektum létrehozás CREATE - objektum megszüntetés DROP - objektum módosítás ALTER

Microsoft Excel. Táblázatkezelés. Dr. Dienes Beatrix

Csoportosított adatok megjelenítése sorhalmaz függvények használatával

ÁTLAG(tartomány) DARAB(tartomány) DARAB2(tartomány) STATISZTIKAI FÜGGVÉNYEK

Lekérdezések az SQL-ben 1.rész

ADATBÁZIS HASZNÁLAT I. 4. gyakorlat

SQL/PSM kurzorok rész

1. Alapok. #!/bin/bash

Indexek és SQL hangolás

Haladó DBMS ismeretek 1

Word and Polygon List for Obtuse Triangular Billiards II

Sztringkezelő függvények. A string típusú változók kezelése, használata és szerepük a feldolgozás során

Adattípusok. Max. 2GByte

Lekérdezések az SQL-ben 1.rész

Az SQL nyelv Structured Query Language (Struktúrált lekérdező nyelv)

N Y I L A T K O Z A T

Adatbázis-kezelés, információs-rendszerek

Adatbázisok. 9. gyakorlat SQL: SELECT október október 26. Adatbázisok 1 / 14

Operációs Rendszerek II. labor. 2. alkalom

Adatbázisok* tulajdonságai

C# Nyelvi Elemei. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) C# Nyelvi Elemei / 18

5. téma XML DB. Az adatkezelés és XML kapcsolata. Miért fontos az XML használata az adatbázis kezelésben?

Construction of a cube given with its centre and a sideline

Adatbázisok elmélete 9. előadás

Adattípusok. Numerikus adatok. A numerikus adatok különböző típusú számértékek. Logikai érték

Excel Hivatkozások, függvények használata

Excel Hivatkozások, függvények használata

Átírás:

SQL sorfüggvények Copyright 2004, Oracle. All rights reserved.

Célkitőzés Különbözı típusú SQL sorfüggvények megismerése A karaktertípusú, numerikus, illetve dátumtípusú sorfüggvények használata a SELECT utasításokban Típus-átalakító sorfüggvények megismerése 3-2 Copyright 2004, Oracle. All rights reserved.

SQL-függvények Input Output Függvény arg 1 arg 2 A függvény végrehajtja a mőveletet Az eredmény értéke arg n A bemutatott függvények többsége Oracle-specifikus. 3-3 Copyright 2004, Oracle. All rights reserved.

Az SQL-függvények két típusa Függvények Sorfüggvények Oszlopfüggvények Minden sorra ad egy eredményt. Egy sorhalmazra ad egy eredményt. (összesítı függvények) 3-4 Copyright 2004, Oracle. All rights reserved.

A sorfüggvények: Sorfüggvények Az adattételek átalakítására, feldolgozására használhatók. Több argumentumból egy értéket eredményez. Az argumentum lehet felhasználói konstans, változó, oszlopnév, kifejezés. A lekérdezés eredményének minden sorára meghívódik. Minden sorra egy értéket ad vissza. Az eredménye más adattípusú is lehet mint az argumentum. Egymásba lehet ágyazni. Használható a SELECT, WHERE és ORDER BY részekben. function_name [(arg1, arg2,...)] 3-5 Copyright 2004, Oracle. All rights reserved.

Sorfüggvények Karakter Általános Sorfüggvények Numerikus Konvertáló Dátum 3-6 Copyright 2004, Oracle. All rights reserved.

Karakterfüggvények Karakterfüggvények Kisbető-nagybetőkezelı LOWER UPPER INITCAP Karakterkezelı függvények CONCAT SUBSTR LENGTH INSTR LPAD RPAD TRIM REPLACE 3-7 Copyright 2004, Oracle. All rights reserved.

Karakterfüggvények Függvény LOWER(column expression) UPPER(column expression) INITCAP(column expression) CONCAT(column1 expression1, column2 expression2) SUBSTR(column expression,m[,n]) Leírás Kisbetőre konvertál Nagybetőre konvertál A szavak elsı betőjét nagybetőre, a többit kisbetőre konvertálja A két karakterértéket összefőzi; ugyanaz mint a mővelet. Az m-ik karaktertıl kezdıdıen n karaktert ad vissza. (Ha m negatív, akkor a végétıl vett m-ik karaktert jelenti.) Ha n hiányzik, akkor az összes karatert megkapjuk a karakterlánc végéig. 3-8 Copyright 2004, Oracle. All rights reserved.

Függvény LENGTH(column expression) Karakterfüggvények Leírás A karakterlánc hossza. INSTR(column expression, string, [,m], [n] ) A karaktereslánc a kifejezésben balról az m-ik betőtıl számítva hanyadik helyen fordul elı elıször. Kereshetjük az n-ik elıfordulás kezdı helyét is. Alapértelmezésben m=n=1. LPAD(column expression, n, 'string') A szöveget kiegészíti balról a megadott RPAD(column expression, n, 'string') karakterekkel az adott hosszig, A szöveget kiegészíti jobbról a megadott karakterekkel az adott hosszig, Karaktereket nem kötelezı megadni, ekkor szóközt használ. TRIM(leading trailing both, trim_character FROM trim_source) REPLACE(text, search_string, replacement_string) A karakterlánc elejérıl és/vagy végérıl eltávolítja a szóközöket, illetve a megadott karaktert. A szövegben lecseréli egy szövegrész összes elıfordulását a megadott szövegre. Ha az utóbbit nem adjuk meg, akkor törli a keresett szöveget. 3-9 Copyright 2004, Oracle. All rights reserved.

Kisbető-nagybetőkezelı függvények Például: Függvény LOWER('SQL Nyelv') UPPER('SQL Nyelv') INITCAP('SQL Nyelv') Eredmény sql nyelv SQL NYELV Sql Nyelv SELECT 'The job id for' UPPER(last_name) ' is ' LOWER(job_id) AS "EMPLOYEE DETAILS" FROM employees; EREDMÉNYE: 3-10 Copyright 2004, Oracle. All rights reserved.

A kisbető-nagybetőkezelı függvények használata Adjuk meg Higgins azonosítóját, nevét és osztályának azonosítóját: SELECT employee_id, last_name, department_id FROM employees WHERE last_name = 'higgins'; no rows selected SELECT employee_id, last_name, department_id FROM employees WHERE LOWER(last_name) = 'higgins'; Ugyanezt adná a következı is: SELECT employee_id, last_name, department_id FROM employees WHERE INITCAP(last_name) = 'Higgins'; 3-11 Copyright 2004, Oracle. All rights reserved.

Karakterkezelı függvények használata Function CONCAT('Hello', 'World') SUBSTR('HelloWorld',1,5) Result HelloWorld Hello LENGTH('HelloWorld') 10 INSTR('HelloWorld', 'W') 6 LPAD(salary,10,'*') *****24000 RPAD(salary, 10, '*') 24000***** REPLACE('JACK and JUE','J','BL') BLACK and BLUE TRIM('H' FROM 'HelloWorld') elloworld A függvényekbe helyettesítı változókat is tehetünk: select upper('&valami') from dual 3-12 Copyright 2004, Oracle. All rights reserved.

Karakterkezelı függvények használata 1. Vonjuk össze a keresztnevet és vezetéknevet! 2. Hány betős a vezetéknév? 3. A vezetéknévben hanyadik bető "a"? 4. A beosztáskód a 4. betőtıl 'REP'. SELECT employee_id, CONCAT(first_name, last_name) NAME, job_id, LENGTH (last_name), INSTR(last_name, 'a') "Contains 'a'?" FROM employees WHERE SUBSTR(job_id, 4) = 'REP'; 1 2 3 1 2 SELECT * FROM EMPLOYEES WHERE SUBSTR(last_name, -1, 1) = 'n'; -- a vezetéknév n-re végzıdik. 3 3-13 Copyright 2004, Oracle. All rights reserved.

Numerikus függvények ROUND: Adott tízedesjegyre kerekít (ha n negatív, akkor a tízedesvesszıtıl balra kerekít). TRUNC: Adott tízedesjegy utáni részt levágja MOD: A maradékos osztást maradékát adja vissza Függvény Eredmény ROUND(45.926, 2) 45.93 TRUNC(45.926, 2) 45.92 MOD(1600, 300) 100 3-14 Copyright 2004, Oracle. All rights reserved.

A ROUND függvény használata 1. Két tízedesjegyre kerekítünk 2. Egészekre kerekítünk 3. Tízesekre kerekítünk. 1 2 SELECT ROUND(45.923,2), ROUND(45.923,0), ROUND(45.923,-1) FROM DUAL; 3 1 2 3 A DUAL tábla a SYS tulajdona, nyilvánossá van téve, így tesztelésre jól használható. Egy DUMMY nevő oszlopa van, egy sora, amiben X szerepel. 3-15 Copyright 2004, Oracle. All rights reserved.

A TRUNC függvény használata 1. Két tízedesjegyre csonkolunk 2. Egészekre csonkolunk (elhagyjuk a törtrészt). 3. Tízesekre csonkolunk. 1 2 SELECT TRUNC(45.923,2), TRUNC(45.923), TRUNC(45.923,-1) FROM DUAL; 3 1 2 3 A ROUND és TRUNC dátumokra is használható. 3-16 Copyright 2004, Oracle. All rights reserved.

A MOD függvény használata Mennyi 5000-rel osztva a fizetések maradéka a kereskedıkre, azaz az 'SA_REP' beosztáskódú dolgozókra? SELECT last_name, salary, MOD(salary, 5000) FROM employees WHERE job_id = 'SA_REP'; Gyakran használjuk egy egész szám parításának eldöntésére. 3-17 Copyright 2004, Oracle. All rights reserved.

A dátumok használata A dátumokat az Oracle numerikusan tárolja. A dátum tartalmazza az évszázadot, évet, hónapot, napot, órát és másodpercet. A dátum megjelenítésének alapértelmezése: DD-MON-RR. Ha az aktuális dátum a század második felében van, és a kétjegyő évszám az elsı felében, akkor a következı századnak tekinti, különben az aktuális századnak. Ha az aktuális dátum a század elsı felében van, és a kétjegyő évszám a második felében, akkor az elızı századnak tekinti, különben az aktuális századnak. SELECT last_name, hire_date FROM employees WHERE hire_date < '01-FEB-88';'; 3-18 Copyright 2004, Oracle. All rights reserved.

A dátumok használata A SYSDATE függvény segítségével megkaphatjuk: az adatbázis-kezelı rendszerdátumát és az adatbázis-kezelı rendszeridejét. Ha a hónapok nevét magyarul akarjuk látni: ALTER SESSION set NLS_LANGUAGE = "HUNGARIAN" select to_char(sysdate,'yyyy-month-dd') from dual TO_CHAR(SYSDATE,'YYYY-MONTH-DD') 2008-Február -16 3-19 Copyright 2004, Oracle. All rights reserved.

Dátumaritmetika Egy dátumhoz hozzá lehet adni vagy ki lehet vonni egy számot. A számnak megfelelı nappal növeli vagy csökkenti a dátum értékét. Két dátum kivonása a köztük eltelt napok számát adja vissza. Mivel egy óra a nap 24-ed része, így órákat is hozzá tudunk adni egy dátumhoz. 3-20 Copyright 2004, Oracle. All rights reserved.

Dátummőveletek használata Adjuk meg a 90-es osztályon, hogy hány hetet dolgoztak a belépés óta a dolgozók! SELECT last_name, (SYSDATE-hire_date)/7 AS WEEKS FROM employees WHERE department_id = 90; 3-21 Copyright 2004, Oracle. All rights reserved.

Dátumfüggvények Függvény Eredmény MONTHS_BETWEEN(date1, date2) A dátumok közti hónapok száma ADD_MONTHS(date, n) NEXT_DAY(date, 'char') LAST_DAY(date) ROUND(date[,'fmt']) TRUNC(date[, 'fmt']) n hónappal növeli a dátumot A következı adott nevő nap dátuma. A dátum hónapjának utolsó napja. A dátum kerekítése A dátum levágása 3-22 Copyright 2004, Oracle. All rights reserved.

A dátumfüggvények használata Függvény Eredmény MONTHS_BETWEEN ('01-SEP-95','11-JAN-94') 19.6774194 ADD_MONTHS ('11-JAN-94',6) NEXT_DAY ('01-SEP-95','FRIDAY') LAST_DAY ('01-FEB-95') '11-JUL-94' '08-SEP-95' '28-FEB-95' SELECT employee_id, hire_date, MONTHS_BETWEEN (SYSDATE, hire_date) TENURE, ADD_MONTHS (hire_date, 6) REVIEW, NEXT_DAY (hire_date, 'FRIDAY'), LAST_DAY(hire_date) FROM employeessysdate WHERE MONTHS_BETWEEN (, hire_date) < 70; 3-23 Copyright 2004, Oracle. All rights reserved.

Dátumfüggvények használata Tegyük fel, hogysysdate = '25-JUL-03': Függvény ROUND(SYSDATE,'MONTH') ROUND(SYSDATE,'YEAR') TRUNC(SYSDATE,'MONTH') TRUNC(SYSDATE,'YEAR') Eredmény 01-AUG-03 01-JAN-04 01-JUL-03 01-JAN-03 SELECT employee_id, hire_date, ROUND(hire_date, 'MONTH'), TRUNC(hire_date,'MONTH') FROM employees WHERE hire_date LIKE '%97'; 3-24 Copyright 2004, Oracle. All rights reserved.

Konvertáló függvények Adattípus konverzió Implicit konverzió Explicit konverzió A hasonló adattípusok konverzióját az Oracle szerverre is bízhatjuk (implicit), de ajánlott inkább konvertáló függvényeket használni (explicit). 3-25 Copyright 2004, Oracle. All rights reserved.

Implicit adattípus-konverzió A következı típusok konverzióját az Oracle szerver automatikusan elvégzi: Mirıl VARCHAR2 vagy CHAR VARCHAR2 vagy CHAR NUMBER DATE Mire NUMBER DATE VARCHAR2 VARCHAR2 select hire_date from hr.employees where hire_date > '1990-01-01' A jobb oldal karakteres, a bal oldal dátum, mégis érvényes az összehasonlítás. 3-26 Copyright 2004, Oracle. All rights reserved.

Implicit adattípus-konverzió A következı típusú kifejezések konverzióját az Oracle szerver automatikusan elvégzi: Mirıl VARCHAR2 vagy CHAR VARCHAR2 vagy CHAR Mire NUMBER DATE 3-27 Copyright 2004, Oracle. All rights reserved.

Explicit adattípus-konverzió TO_NUMBER TO_DATE NUMBER CHARACTER DATE TO_CHAR TO_CHAR 3-28 Copyright 2004, Oracle. All rights reserved.

Explicit adattípus-konverzió Függvény TO_CHAR(number date,[ fmt], [nlsparams]) TO_CHAR(number date,[ fmt], [nlsparams]) TO_NUMBER(char,[fmt], [nlsparams]) TO_DATE(char,[fmt],[nlsparams]) Leírás A VARCHAR2 karakter formátumát az fmt modellel lehet megadni. Az nlsparams paraméter mondja meg, hogy milyen tízedesvesszıt, ezres csoportosítót, pénznemeket használunk. Dátumkonverzió esetén az nlsparams paraméter mondja meg, hogy milyen nyelven adtuk meg a napok, hónapok nevét, vagy miként rövidítettük a neveket. Az fmt és nlsparams opcionális paraméterek értelme a fentiek szerint. Az fmt és nlsparams opcionális paraméterek értelme a fentiek szerint. 3-29 Copyright 2004, Oracle. All rights reserved.

A TO_CHAR függvény használata dátummal TO_CHAR(date, 'format_model') A formátum megadása: egyszeres idézıjelek között kisbetőérzékeny tetszıleges érvényes dátumformátumot tartalmazhat Azfm elemmel lehet az automatikusan kiegészített szóközöket eltávolítani, illetve a bevezetı nullákat elnyomni SELECT employee_id, TO_CHAR(hire_date, 'MM/YY') Month_Hired FROM employees WHERE last_name = 'Higgins'; 3-30 Copyright 2004, Oracle. All rights reserved.

A dátumformátum leggyakoribb elemei Elem YYYY YEAR MM MONTH MON DY DAY DD Értelme Évszám (számokkal) Évszám (szövegesen) Hónap sorszáma Hónap teljes neve Hónap 3 betővel rövidítve A hét napja 3 betővel rövidítve A hét napjának teljes neve A nap sorszáma a hónapban select to_char(sysdate,'year') from dual TO_CHAR(SYSDATE,'YEAR') Two Thousand Eight 3-31 Copyright 2004, Oracle. All rights reserved.

Elem További formátummodellek Leírás SCC or CC Century; server prefixes B.C. date with - Years in dates YYYY or SYYYY YYY or YY or Y Y,YYY IYYY, IYY, IY, I Year; server prefixes B.C. date with - Last three, two, or one digits of year Year with comma in this position Four-, three-, two-, or one-digit year based on the ISO standard SYEAR or YEAR Year spelled out; server prefixes B.C. date with - BC or AD B.C. or A.D. Q MM MONTH MON RM WW or W DDD or DD or D DAY DY Indicates B.C. or A.D. year Indicates B.C. or A.D. year using periods Quarter of year Month: two-digit value Name of month padded with blanks to length of nine characters Name of month, three-letter abbreviation Roman numeral month Week of year or month Day of year, month, or week Name of day padded with blanks to a length of nine characters Name of day; three-letter abbreviation J Julian day; the number of days since December 31, 4713 B.C. 3-32 Copyright 2004, Oracle. All rights reserved.

A dátum típusú formátummodel használata Idıformátum megadása: HH24:MI:SS AM 15:45:32 PM Szöveget kettıs idézıjelek között lehet a dátumban használni: DD "of" MONTH 12 of OCTOBER A számokat szövegesen is kiírathatjuk: ddspth fourteenth 3-33 Copyright 2004, Oracle. All rights reserved.

További formátummodellek Element Description AM or PM Meridian indicator A.M. or P.M. Meridian indicator with periods HH or HH12 or HH24 Hour of day, or hour (1 12), or hour (0 23) MI Minute (0 59) SS Second (0 59) SSSSS Seconds past midnight (0 86399) Element Description /., Punctuation is reproduced in the result. of the Quoted string is reproduced in the result. Element TH SP SPTH or THSP Description Ordinal number (for example, DDTH for 4TH) Spelled-out number (for example, DDSP for FOUR) Spelled-out ordinal numbers (for example, DDSPTH for FOURTH) 3-34 Copyright 2004, Oracle. All rights reserved.

A TO_CHAR függvény használata dátumokkal SELECT last_name, TO_CHAR(hire_date, 'fmdd Month YYYY') AS HIREDATE FROM employees; SELECT last_name, TO_CHAR(hire_date, 'fmddspth "of" Month YYYY fmhh:mi:ss AM') HIREDATE FROM employees; 3-35 Copyright 2004, Oracle. All rights reserved.

A TO_CHAR függvény használata számokkal TO_CHAR(number, 'format_model') A legfontosabb formátummodellek: Elem Eredménye 9 Szám 0 Nulla $ Lebegı dollárjel L Lebegı pénznem. Tízedespont, Ezresek elválasztójele 3-36 Copyright 2004, Oracle. All rights reserved.

További formátummodellek E lem ent D escription E xam ple R esult 9 N um eric position (num ber of 9s determ ine display w idth) 999999 1234 0 D isplay leading zeros 099999 001234 $ Floating dollar sign $999999 $1234 L Floating local currency sym bol L999999 FF1234 D R eturns in the specified position the decim al character. T he default is a period (.). 99D 99 99.99. D ecim al point in position specified 999999.99 1234.00 G R eturns the group separator in the specified position. Y ou can specify m ultiple group separators in a num ber form at m odel. 3-37 Copyright 2004, Oracle. All rights reserved. 9,999 9G 999, C om m a in position specified 999,999 1,234 M I M inus signs to right (negative values) 999999M I 1234- PR Parenthesize negative num bers 999999PR <1234> EEEE Scientific notation (form at m ust specify four Es) 99.999EEEE 1.234E+03 U R eturns in the specified position the "Euro" (or other) dual currency U 9999 1234 V M ultiply by 10 n tim es (n = num ber of 9s after V ) 9999V 99 123400 S R eturns the negative or positive value S9999-1234 or +1234 B D isplay zero values as blank, not 0 B9999.99 1234.00

A TO_CHAR függvény használata számokkal SELECT TO_CHAR(salary, '$99,999.00') SALARY FROM employees WHERE last_name = 'Ernst'; Az Oracle szerver (#) jeleket tesz, ha több számjegy van mint amennyit megadtunk a formátum modellben. 3-38 Copyright 2004, Oracle. All rights reserved.

A TO_NUMBER és a TO_DATE függvények használata Karakterként megadott számokat lehet a TO_NUMBER függvénnyel számtípussá alakítani: TO_NUMBER(char[, 'format_model']) A szövegként megadott dátumot ato_date függvénnyel lehet dátumtípussá konvertálni: TO_DATE(char[, 'format_model']) Ezekben a függvényekben használhatjuk azfx módosítót. Ennek jelentése, hogy pontosan meg kell egyezni méretre is (szóközöket is figyelembe véve) az argumentumoknak. 3-39 Copyright 2004, Oracle. All rights reserved.

RR dátumformátum Aktuális év 1995 1995 2001 2001 Megadott dátum 27-OCT-95 27-OCT-17 27-OCT-17 27-OCT-95 RR forma 1995 2017 2017 1995 YY forma 1995 1917 2017 2095 Ha az aktuális év két utolsó jegye 0 49 50 99 Ha a megadott kétjegyő év: 0 49 50 99 Aktuális évszázad dátuma Az aktuális utáni évszázad dátuma Az aktuális elıtti évszázad dátuma Az aktuális évszázad dátuma 3-40 Copyright 2004, Oracle. All rights reserved.

AzRR dátumformátum használata Keressük meg az 1990 elıtt belépett dolgozókat! HaRR datumformátumot használunk, akkor mindegy hogy 1999-ben adjuk ki az utasítást vagy 2008-ban: SELECT last_name, TO_CHAR(hire_date, 'DD-Mon-YYYY') FROM employees WHERE hire_date < TO_DATE('01-Jan-90','DD-Mon-RR'); 3-41 Copyright 2004, Oracle. All rights reserved.

Függvények egymásba ágyazása A sorfüggvények tetszıleges mélységig egymásba ágyazhatók. A kiértékelés belülrıl kifele történik. F3(F2(F1(col,arg1),arg2),arg3) Step 1 = Result 1 Step 2 = Result 2 Step 3 = Result 3 3-42 Copyright 2004, Oracle. All rights reserved.

Függvények kompozíciója SELECT last_name, UPPER(CONCAT(SUBSTR (LAST_NAME, 1, 8), '_US')) FROM employees WHERE department_id = 60; 3-43 Copyright 2004, Oracle. All rights reserved.

Általános függvények Ezek a függvények tetszıleges adattípussal és nullértékek esetén is mőködnek. NVL (expr1, expr2) NVL2 (expr1, expr2, expr3) NULLIF (expr1, expr2) COALESCE (expr1, expr2,..., exprn) 3-44 Copyright 2004, Oracle. All rights reserved.

Az NVL függvény A nullértéket a megadott értékkel helyettesíti: Az adattípus lehet dátum, karakter, szám. Az argumentumok adattípusának egyezıknek kell lenniük: NVL(commission_pct,0) NVL(hire_date,'01-JAN-97') NVL(job_id,'No Job Yet') 3-45 Copyright 2004, Oracle. All rights reserved.

Az NVL függvény használata SELECT last_name, salary, NVL(commission_pct, 0), (salary*12) + (salary*12*nvl(commission_pct, 0)) AN_SAL FROM employees; 1 2 1 2 3-46 Copyright 2004, Oracle. All rights reserved.

AzNVL2 függvény használata SELECT last_name, salary, commission_pct, NVL2(commission_pct, 'SAL+COMM', 'SAL') income 2 FROM employees WHERE department_id IN (50, 80); 1 1 2 3-47 Copyright 2004, Oracle. All rights reserved.

AzNULLIF függvény használata 1 SELECT first_name, LENGTH(first_name) "expr1", last_name, LENGTH(last_name) "expr2", 2 NULLIF(LENGTH(first_name), LENGTH(last_name)) result FROM employees; 3 1 2 3 3-48 Copyright 2004, Oracle. All rights reserved.

A COALESCE függvény használata ACOALESCE függvény esetében - aznvl függvénnyel szemben - több helyettesítı értéket is megadhatunk. Ha az elsı kifejezés nem nullértéket ad vissza, akkor ez a függvény értéke, különben a COALESCE függvényt alkalmazza a maradék kifejezésekre. 3-49 Copyright 2004, Oracle. All rights reserved.

A COALESCE függvény használata SELECT last_name, COALESCE(manager_id,commission_pct, -1) comm FROM employees ORDER BY commission_pct; 3-50 Copyright 2004, Oracle. All rights reserved.

Feltételes kifejezések Segítségükkel IF-THEN-ELSE típusú logikát lehet használni az SQL utasításban Kétféle módszert használhatunk: CASE expression DECODE function 3-51 Copyright 2004, Oracle. All rights reserved.

A CASE kifejezés Feltételes lekérdezéseket lehet megfogalmazni vele az IF-THEN-ELSE utasításhoz hasonlóan: CASE expr WHEN comparison_expr1 THEN return_expr1 [WHEN comparison_expr2 THEN return_expr2 WHEN comparison_exprn THEN return_exprn ELSE else_expr] END 3-52 Copyright 2004, Oracle. All rights reserved.

A CASE kifejezés használata SELECT last_name, job_id, salary, CASE job_id WHEN 'IT_PROG' THEN 1.10*salary WHEN 'ST_CLERK' THEN 1.15*salary WHEN 'SA_REP' THEN 1.20*salary ELSE salary END "REVISED_SALARY" FROM employees; 3-53 Copyright 2004, Oracle. All rights reserved.

A DECODE függvény Feltételes lekérdezéseket lehet megfogalmazni vele a CASE vagy az IF-THEN-ELSE utasításhoz hasonlóan: DECODE(col expression, search1, result1 [, search2, result2,...,] [, default]) 3-54 Copyright 2004, Oracle. All rights reserved.

A DECODE függvény használata SELECT last_name, job_id, salary, DECODE(job_id, 'IT_PROG', 1.10*salary, 'ST_CLERK', 1.15*salary, 'SA_REP', 1.20*salary, salary) REVISED_SALARY FROM employees; 3-55 Copyright 2004, Oracle. All rights reserved.

A DECODE függvény használata SELECT last_name, salary, DECODE (TRUNC(salary/2000, 0), 0, 0.00, FROM employees WHERE department_id = 80; 1, 0.09, 2, 0.20, 3, 0.30, 4, 0.40, 5, 0.42, 6, 0.44, 0.45) TAX_RATE 3-56 Copyright 2004, Oracle. All rights reserved.

Összefoglalás Ebben a részben megtanultuk: hogyan kell a dátumokkal mőveleteket végezni, függvényekben dátumokat használni hogyan lehet módosítani az adatokat függvények segítségével hogyan lehet a lekérdezés eredményét adó sorokat formázni hogyan lehet különbözı dátumformátumokat használni a megjelenítésben hogyan lehet az adattípusokat konvertálni hogyan kell használni aznvl függvényt hogyan mőködnek a feltételes - IF-THEN-ELSE logikájú kifejezések 3-57 Copyright 2004, Oracle. All rights reserved.