Einfache Funktionen

Werbung
SQL Funktionen
SQL Intensivpraktikum SS 2008
Eingabe
Einfache Funktionen
Ausgabe
Funktion
arg 1
arg 2
Funktion führt
Aktion durch
Ergebnis
Wert
arg n
SQL1 basierend auf OAI-Kurs Copyright © Oracle Corporation, 1998. All rights reserved.
Zwei Typen von SQL Funktionen
SQL2 basierend auf OAI-Kurs Copyright © Oracle Corporation, 1998. All rights reserved.
Einfache Funktionen
• Manipulieren Einzeldaten
• Nehmen Argumente entgegen und
geben einen Wert zurück
Funktionen
• Geben für jeden Aufruf ein Ergebnis
zurück
Einfache
Funktionen
Aggregat
Funktionen
• Ändern evtl. den Datentyp
• Können verschachtelt werden
function_name (column|expression, [arg1, arg2,...])
SQL3 basierend auf OAI-Kurs Copyright © Oracle Corporation, 1998. All rights reserved.
SQL4 basierend auf OAI-Kurs Copyright © Oracle Corporation, 1998. All rights reserved.
Einfache Funktionen
Character Functions
Zeichen
Zeichen
Funktionen
General
Zahlen
Einfache
Funktionen
Konvertierung
Datum
SQL5 basierend auf OAI-Kurs Copyright © Oracle Corporation, 1998. All rights reserved.
Konvertierungsfunktionen
Konvertierung von Zeichenketten
Funktion
Ergebnis
LOWER('SQL Kurs')
sql kurs
UPPER('SQL Kurs')
SQL KURS
INITCAP('SQLKurs')
Sql Kurs
Konvertierungsfunktionen
Zeichenmanipulationsfunktionen
LOWER
CONCAT
UPPER
INITCAP
SUBSTR
LENGTH
INSTR
LPAD
RPAD
SQL6 basierend auf OAI-Kurs Copyright © Oracle Corporation, 1998. All rights reserved.
Beispiel für
Konvertierungsfunktionen
Geben Sie die Angestelltennummer, den
Namen und die Abteilungsnummer für den
Angestellten Blake aus.
SQL> SELECT empno, ename, deptno
2 FROM
emp
3 WHERE
ename = 'blake';
no rows selected
SQL> SELECT
2 FROM
3 WHERE
empno, ename, deptno
emp
LOWER(ename) = 'blake';
EMPNO ENAME
DEPTNO
--------- ---------- --------7698 BLAKE
30
SQL7 basierend auf OAI-Kurs Copyright © Oracle Corporation, 1998. All rights reserved.
SQL8 basierend auf OAI-Kurs Copyright © Oracle Corporation, 1998. All rights reserved.
Zeichenmanipulations-Funktionen
Beispiel für Zeichenkettenmanipulationsfunktionen
Manipulieren von Zeichenketten
Funktion
Ergebnis
CONCAT('Good', 'String') GoodString
SUBSTR('String',1,3)
Str
LENGTH('String')
6
INSTR('String', 'r')
3
LPAD(sal,10,'*')
******5000
RPAD('String ',10, '*')
String****
SQL9 basierend auf OAI-Kurs Copyright © Oracle Corporation, 1998. All rights reserved.
Rundet einen Wert auf
angegebene Stellenzahl
ROUND(45.926, 2)
• TRUNC:
45.93
CONCAT(ENAME,JOB)
LENGTH(ENAME) INSTR(ENAME,'A')
------------------- ------------- ---------------MARTINSALESMAN
6
2
ALLENSALESMAN
5
1
TURNERSALESMAN
6
0
WARDSALESMAN
4
2
Beispiel für die ROUND
Funktion
SQL> SELECT ROUND(45.923,2), ROUND(45.923,0),
2
ROUND(45.923,-1)
3 FROM
DUAL;
Schneidet einen Wert auf
angegebene Stellenzahl
TRUNC(45.926, 2)
• MOD:
ENAME
---------MARTIN
ALLEN
TURNER
WARD
SQL10 basierend auf OAI-Kurs Copyright © Oracle Corporation, 1998. All rights reserved.
Numerische Funktionen
• ROUND:
SQL> SELECT ename, CONCAT (ename, job), LENGTH(ename),
2
INSTR(ename, 'A')
3 FROM
emp
4 WHERE SUBSTR(job,1,5) = 'SALES';
ROUND(45.923,2) ROUND(45.923,0) ROUND(45.923,-1)
--------------- -------------- ----------------45.92
46
50
45.92
gibt den Rest der Division zurück
MOD(1600, 300)
100
SQL11 basierend auf OAI-Kurs Copyright © Oracle Corporation, 1998. All rights reserved.
SQL12 basierend auf OAI-Kurs Copyright © Oracle Corporation, 1998. All rights reserved.
Beispiel für die TRUNC
Funktion
SQL> SELECT TRUNC(45.923,2), TRUNC(45.923),
2
TRUNC(45.923,-1)
3 FROM
DUAL;
Beispiel für die MOD Funktion
Berechnet den Rest des Quotienten von
Gehalt und Provision für alle Verkäufer
(Job ist SALESMAN).
SQL> SELECT
2 FROM
3 WHERE
TRUNC(45.923,2) TRUNC(45.923) TRUNC(45.923,-1)
--------------- ------------- --------------45.92
45
40
SQL13 basierend auf OAI-Kurs Copyright © Oracle Corporation, 1998. All rights reserved.
Datum
• Oracle speichert das Datum als numerisches Format: Jahrhundert, Jahr,
Monat, Tag, Stunde, Minute, Sekunde.
• Das Standardformat ist DD-MON-YY.
• SYSDATE ist eine Funktion, die Datum
und Zeit zurück gibt.
• DUAL ist eine Dummy Tabelle z. B. um
SYSDATE aufzurufen.
SQL15 basierend auf OAI-Kurs Copyright © Oracle Corporation, 1998. All rights reserved.
ename, sal, comm, MOD(sal, comm)
emp
job = 'SALESMAN';
ENAME
SAL
COMM MOD(SAL,COMM)
---------- --------- --------- ------------MARTIN
1250
1400
1250
ALLEN
1600
300
100
TURNER
1500
0
1500
WARD
1250
500
250
SQL14 basierend auf OAI-Kurs Copyright © Oracle Corporation, 1998. All rights reserved.
Datums - Arithmetik
• Beim Addieren oder Subtrahieren einer
Zahl zum oder vom Datum erhält das
Ergebnis den Type Date und einen
Datumswert
• Subtraktion zweier Datumswerte voneinander ergibt die Anzahl der Tage
dazwischen
SQL16 basierend auf OAI-Kurs Copyright © Oracle Corporation, 1998. All rights reserved.
Beispiel für Arithmetishe
Operatoren mit Datumswerten
SQL> SELECT ename, (SYSDATE-hiredate)/7 WEEKS
2 FROM
emp
3 WHERE deptno = 10;
ENAME
---------KING
CLARK
MILLER
WEEKS
--------830.93709
853.93709
821.36566
Datumsfunktionen
FUNKTION
BESCHREIBUNG
MONTHS_BETWEEN
Anzahl der Monate zwischen zwei Datumswerten
ADD_MONTHS
Addiert den Kalendermonat
zum Datum
NEXT_DAY
Der auf das angegebene
datum folgende Tag
LAST_DAY
Letzter Tag des Monats
ROUND
TRUNC
SQL17 basierend auf OAI-Kurs Copyright © Oracle Corporation, 1998. All rights reserved.
• MONTHS_BETWEEN ('01-SEP-95','11-JAN-94')
19.6774194
'11-JUL-94'
• NEXT_DAY ('01-SEP-95','FRIDAY')
'08-SEP-95'
• LAST_DAY('01-SEP-95')
'30-SEP-95'
SQL19 basierend auf OAI-Kurs Copyright © Oracle Corporation, 1998. All rights reserved.
Geschnittenes Datum
SQL18 basierend auf OAI-Kurs Copyright © Oracle Corporation, 1998. All rights reserved.
Beispiele für Datumsfunktionen
• ADD_MONTHS ('11-JAN-94',6)
Gerundetes Datum
Beispiele für Datumsfunktionen
• ROUND('25-JUL-95','MONTH')
01-AUG-95
• ROUND('25-JUL-95','YEAR')
01-JAN-96
• TRUNC('25-JUL-95','MONTH')
01-JUL-95
• TRUNC('25-JUL-95','YEAR')
01-JAN-95
SQL20 basierend auf OAI-Kurs Copyright © Oracle Corporation, 1998. All rights reserved.
Konvertierungsfunktionen
Datentyp
Konvertierung
Implizite Datentyp
Konvertierung
Explizite Datentyp
Konvertierung
SQL21 basierend auf OAI-Kurs Copyright © Oracle Corporation, 1998. All rights reserved.
Implizite Datentyp Konvertierung
Bei der Überprüfung von Ausdrücken
kann Oracle automatisch konvertieren
Von
Zu
VARCHAR2 or CHAR
NUMBER
VARCHAR2 or CHAR
DATE
Implizite Datentyp Konvertierung
Oracle kann automatisch konvertieren
Von
Zu
VARCHAR2 or CHAR
NUMBER
VARCHAR2 or CHAR
DATE
NUMBER
VARCHAR2
DATE
VARCHAR2
SQL22 basierend auf OAI-Kurs Copyright © Oracle Corporation, 1998. All rights reserved.
Explizite Datentyp Konvertierung
TO_NUMBER
NUMBER
TO_CHAR
SQL23 basierend auf OAI-Kurs Copyright © Oracle Corporation, 1998. All rights reserved.
TO_DATE
CHARACTER
TO_CHAR
SQL24 basierend auf OAI-Kurs Copyright © Oracle Corporation, 1998. All rights reserved.
DATE
TO_CHAR Funktion mit Datum
Datums-Format Vorgabe-Elemente
TO_CHAR(date, 'fmt')
Die Format-Vorgabe:
• Muss in einfache Apostrophe eingeschlossen sein und ist case-sensitiv
• Kann auch ein fehlerhaftes DatumsformatElement enthalten
• Ein fm-Element kann zur Rückgabe
auffüllende Leerzeichen oder führende
Nullen haben
• Ist vom Datumswert durch Komma getrennt
SQL25 basierend auf OAI-Kurs Copyright © Oracle Corporation, 1998. All rights reserved.
Datums-Format Vorgabe-Elemente
• Zeitelemente-Format für den Zeitteil im
Datum.
HH24:MI:SS AM
15:45:32 PM
• Zeichenkette kann zugefügt werden – in
Apostroph eingeschlossen.
DD "of" MONTH
12 of OCTOBER
• Zahlensuffix für ausgeschriebene Zahlen
ddspth
fourteenth
SQL27 basierend auf OAI-Kurs Copyright © Oracle Corporation, 1998. All rights reserved.
YYYY
Jahreszahl in Ziffern
YEAR
Jahr ausgeschrieben
MM
2-Ziffern-Wert für Monat
MONTH
Voller Name für Monat
DY
3-Buchstaben-Wert für den
Wochentag
DAY
Voller Name für den Tag
SQL26 basierend auf OAI-Kurs Copyright © Oracle Corporation, 1998. All rights reserved.
Beispiel für TO_CHAR Funktion
mit Datum
SQL> SELECT ename,
2
TO_CHAR(hiredate, 'fmDD Month YYYY') HIREDATE
3 FROM
emp;
ENAME
HIREDATE
---------- ----------------KING
17 November 1981
BLAKE
1 May 1981
CLARK
9 June 1981
JONES
2 April 1981
MARTIN
28 September 1981
ALLEN
20 February 1981
...
14 rows selected.
SQL28 basierend auf OAI-Kurs Copyright © Oracle Corporation, 1998. All rights reserved.
TO_CHAR Funktion mit Zahlen
TO_CHAR(number, 'fmt')
Dieses Format wird verwendet, um Zahlen
als Zeichen auszugeben.
9
0
Repräsentiert eine Ziffer
Platzhalter für eine Null
$
Platzhalter für Dollarzeichen
Dezimalpunkt
.
,
Beispiel für TO_CHAR Funktion
mit Zahlen
SQL> SELECT
2 FROM
3 WHERE
TO_CHAR(sal,'$99,999') SALARY
emp
ename = 'SCOTT';
SALARY
-------$3,000
Tausender-Trennung
SQL29 basierend auf OAI-Kurs Copyright © Oracle Corporation, 1998. All rights reserved.
TO_NUMBER und TO_DATE
Funktionen
• Konvertiert eine Zeichenkette in ein
Zahlenformat
TO_NUMBER(char)
• Konvertiert eine Zeichenkette in ein
Datumsformat
SQL30 basierend auf OAI-Kurs Copyright © Oracle Corporation, 1998. All rights reserved.
NVL Funktion
Konvertiert NULL in einen Wert
• Ausgangsdatentyp kann date, character
oder number sein.
• Datentypen müssen passen
– NVL(comm,0)
– NVL(hiredate,'01-JAN-97')
– NVL(job,'kein Job')
TO_DATE(char[, 'fmt'])
SQL31 basierend auf OAI-Kurs Copyright © Oracle Corporation, 1998. All rights reserved.
SQL32 basierend auf OAI-Kurs Copyright © Oracle Corporation, 1998. All rights reserved.
Beispiel für die NVL Function
SQL> SELECT ename, sal, comm, (sal*12)+NVL(comm,0)
2 FROM
emp;
ENAME
SAL
COMM (SAL*12)+NVL(COMM,0)
---------- --------- --------- -------------------KING
5000
60000
BLAKE
2850
34200
CLARK
2450
29400
JONES
2975
35700
MARTIN
1250
1400
16400
ALLEN
1600
300
19500
...
14 rows selected.
SQL33 basierend auf OAI-Kurs Copyright © Oracle Corporation, 1998. All rights reserved.
Beispiel für die DECODE
Funktion
SQL> SELECT job, sal,
2
DECODE(job, 'ANALYST', SAL*1.1,
3
'CLERK',
SAL*1.15,
4
'MANAGER', SAL*1.20,
5
SAL)
6
REVISED_SALARY
7 FROM
emp;
JOB
SAL REVISED_SALARY
--------- --------- -------------PRESIDENT
5000
5000
MANAGER
2850
3420
MANAGER
2450
2940
...
14 rows selected.
SQL35 basierend auf OAI-Kurs Copyright © Oracle Corporation, 1998. All rights reserved.
DECODE Funktion
Unter bestimmten Bedingungen wird
etwas ausgeführt (wie CASE oder IFTHEN-ELSE )
DECODE(col/expression, search1, result1
[, search2, result2,...,]
[, default])
SQL34 basierend auf OAI-Kurs Copyright © Oracle Corporation, 1998. All rights reserved.
Geschachtelte Funktionen
• Einfache Funktionen können
geschachtelt werden.
• Geschachtelte Funktionen werden vom
innersten Level nach außen aufgelöst
F3(F2(F1(col,arg1),arg2),arg3)
Schritt 1 = Ergebnis 1
Schritt 2 = Ergebnis 2
Schritt 3 = Ergebnis 3
SQL36 basierend auf OAI-Kurs Copyright © Oracle Corporation, 1998. All rights reserved.
Geschachtelte Funktionen
SQL> SELECT
2
3 FROM
4 WHERE
ename,
NVL(TO_CHAR(mgr),'No Manager')
emp
mgr IS NULL;
ENAME
NVL(TO_CHAR(MGR),'NOMANAGER')
---------- ----------------------------KING
No Manager
SQL37 basierend auf OAI-Kurs Copyright © Oracle Corporation, 1998. All rights reserved.
Herunterladen