SQL Server stellt eine riesige Menge vordefinierter (integrierter) Funktionen zur VerfĂĽgung. Eine integrierte SQL Server-Funktion ist entweder deterministisch oder nicht deterministisch.
Funktionen sind deterministisch, wenn sie bei jedem Aufrufen mit bestimmten Eingabewerten immer das gleiche Ergebnis zurĂĽckgeben.
Funktionen sind nicht deterministisch, wenn sie bei jedem Aufrufen selbst mit denselben bestimmten Eingabewerten verschiedene Ergebnisse zurückliefern können.
WICHTIG: Vordefinierte Funktionen wirken sich bei deren Ausführung nur auf die Anzeige aus, nicht jedoch auf die in der Datenbank gespeicherten Daten. Diese werden in keiner Weise verändert!
Bei den hier behandelten Funktionen handelt es sich um sogenannte Single-Row-Funktionen (Skalar-Funktionen). Diese liefern aus einem Ausdruck einer Zeile einen Wert zurück. Im Gegensatz dazu fassen Multiple-Row-Funktionen (auch als Aggregatfunktionen bekannt) mehrere Werte aus unterschiedlichen Datensätzen zu einem Wert zusammen. Single-Row- bzw. Skalar-Funktionen werden für jede Zeile einmal separat ausgeführt und können sowohl in der SELECT
- als auch in der WHERE
-Klausel verwendet werden. Single- Row-Funktionen können keine, eine oder mehrere Übergabeparameter (auch Argumente genannt) besitzen. Auch hier gibt es Syntax-Unterschiede bei den Herstellern. Der gesamte Funktionsumfang ist jedoch sehr ähnlich. Funktionen lassen sich in verschiedene Typen einteilen. Oft verwendete Typen sind:
Zeichenfolgenfunktionen
Mathematische Funktionen
Datums- und Uhrzeitfunktionen
Konvertierungsfunktionen
Systemfunktionen
Zeichenfolgenfunktionen fĂĽhren Operationen fĂĽr den Eingabewert einer Zeichenfolge (vom Typ char oder varchar) aus und geben eine Zeichenfolge oder einen numerischen Wert zurĂĽck. Werden Argumente ĂĽbergeben, die keine Zeichenfolgewerte sind, wird der Eingabetyp implizit in einen Textdatentyp konvertiert.
SQL Server
ORACLE
CHAR()
LOWER(), UPPER()
LEFT(), RIGHT()
CONCAT()
LEN()
SUBSTR()
LOWER(), UPPER()
LENGTH()
LTRIM(), RTRIM()
INSTR()
REPLICATE()
TRIM()
STR()
SUBSTRING()
CHARINDEX()
Mathematische Funktionen fĂĽhren Berechnungen basierend auf Eingabewerten aus, die als Parameter fĂĽr die Funktionen bereitgestellt werden und geben einen numerischen Wert zurĂĽck.
SQL Server
ORACLE
ROUND()
ROUND()
FLOOR()
FLOOR()
ABS()
ABS()
RAND()
EXP()
EXP()
PI()
POWER()
POWER()
SIN()
SIN()
COS()
SQUARE()
SQRT()
SQRT()
TAN()
LOG()
LOG()
MOD()
TRUNC()
IGN()
LN()
Datums- und Uhrzeitfunktionen fĂĽhren Operationen fĂĽr Datums- und Zeiteingabewerte aus und geben eine Zeichenfolge, eine Zahlen-, Datums- oder Zeitwert zurĂĽck.
SQL Server
ORACLE
DATEADD()
SYSDATE
DATEDIFF()
MONTHS_BETWEEN
DATENAME()
TO_CHAR
DAY(), MONTH(), YEAR()
TO_NUMBER
GETDATE()
ADD_MONTHS
GETUTCDATE()
LAST_DAY
SYSDATETIME()
ROUND
TRUNC
Mittels einer Konvertierungs-Funktion kann beispielsweise ein Datumsformat explizit umgewandelt werden. Die Formatangabe wird von jeder Sprachversion und Spracheinstellung gleich interpretiert. Während die Konvertierungs-Funktion für Datumswerte bei SQL Server standardmässig CONVERT
darstellt, verwendet ORACLE die Funktion TO_DATE
.
SQL Server
ORACLE
Funktion
CONVERT
TO_DATE
Format
Deutsch: tt.mm.jj -> 4
USA: mm/dd/jj -> 1
FĂĽr die vierstellige Jahresangabe 100 addieren (deutsch -> 104)
Format ist frei definierbar
Beispiel
CONVERT(date, '24.12.2004', 4)
CAST('20051224', AS date)
TO_DATE('24.12.2005', 'DD.MM.YY')
Bei SQL Server existiert alternativ die Funktion CAST
. Diese wird vor allem fĂĽr die Konvertierung zwischen dezimalen und numerischen Werten verwendet und wird in der Regel der SQL Server-spezifischen Funktion CONVERT
vorgezogen. CONVERT
kommt bei Microsoft dagegen immer im Zusammenhang mit komplexeren Datums- und Uhrzeitkonvertierungen zum Einsatz. Bei ORACLE existieren neben TO_DATE()
noch die Funktionen TO_CHAR()
und TO_NUMBER()
.
Systemfunktionen fĂĽhren Operationen fĂĽr den Eingabewert einer Zeichenfolge (vom Typ char
oder varchar
) aus und geben eine Zeichenfolge oder einen numerischen Wert zurĂĽck.
SQL Server
ORACLE
CURRENT_USER
HOST_NAME(), HOST_ID()
ISNULL()
NVL()
ISNUMERIC()
NEWID()
Implizite Konvertierungen sind Konvertierungen, die ohne Angabe der CAST- oder CONVERT- Funktion durchgeführt werden. Explizite Konvertierungen sind Konvertierungen, die die Angabe der CAST- oder CONVERT-Funktion erfordern. In der folgenden Abbildung werden alle expliziten und impliziten Datentypkonvertierungen aufgeführt, die für die vom SQL Server-System bereitgestellten Datentypen zulässig sind.
Jede Gruppe bereitet einen kleinen Vortrag zu einem Funktionstyp vor und erarbeitet 4 Anwendungsbeispiele.
Anschliessend präsentiert jede Gruppe ihren Funktionstyp.