Exkurs - Funktionen in der Ausgabe
SQL kann auch Funktionen anwenden, um die Werte von Ausgabespalten zu berechnen.
Leider ist die Sprache hier nicht standardisiert, so dass unterschiedliche Datenbanksysteme verschiedene Syntax verwenden können.
Die folgenden einfachen Beispiele beziehen sich auf das freie Datenbanksystem MySQL.
Beispiel 1: Verbinden von Textfeldern
Häufig will man bei Personen den Vor- und Nachnamen zusammenfassen, z.B. "Lindemann, Erwin". In SQL erlaubt dies der Befehl CONCAT
SELECT CONCAT(Name, ', ', Vorname) AS Name
FROM benutzer
ORDER BY Name DESC
Beachte, dass hier der Aliasname der berechneten Spalte auch in der Sortierung verwendet wird.
Beispiel 2: Berechnen des Alters
Den Geburtstag des Benutzers kann man verwenden, um dessen Alter zu berechnen.
SELECT Name, Vorname,
DATEDIFF(NOW(),GebDat) AS Tage,
ROUND(DATEDIFF(NOW(),GebDat)/365) AS Jahre,
DAYNAME(GebDat) AS Wochentag
FROM benutzer
ORDER BY Tage DESC
Zur Erklärung:
- NOW() liefert das aktuelle Tagesdatum (und die Zeit).
- Rechenoperationen wie z.B. /365 sind erlaubt.
- ROUND(...) rundet den Wert.
- DAYNAME(...) liefert den Wochentag des Datums (allerdings in Englisch).
Das könnte mit einem vorherigen SET-Befehl umgestellt werden
SET lc_time_names = 'de_DE';
(funktioniert aus Sicherheitsgründen nicht auf der online-Datenbank)
Beispiel 3: Teilen von Zeichenketten
Es könnte interessant sein herauszufinden, welchen Datentyp die Bilddatei hat - z.B. für die Anzeige. Der folgende Befehl kann hier helfen:
SELECT Name,
INSTR(Name,'.') AS Position,
MID(Name, INSTR(Name,'.')) AS Bildtyp
FROM bild
Der Befehl INSTR(...)
sucht die Position des Punktes im Text, MID(...)
gibt den Teilstring ab dieser Position zurück.