i

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

SQL Fenster öffnen Häufig will man bei Personen den Vor- und Nachnamen zusammenfassen, z.B. "Lindemann, Erwin". In SQL erlaubt dies der Befehl CONCAT

Ergebnistabelle bei Nutzung des CONCAT-Befehls

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

SQL Fenster öffnen 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

Ergebnistabelle des SQL-Befehls mit berechneten Spalten Tage, Jahre und Wochentag

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

SQL Fenster öffnen 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

Ergebnistabelle des SQL-Befehls mit berechneten Spalten Position und Bildtyp

Der Befehl INSTR(...) sucht die Position des Punktes im Text, MID(...) gibt den Teilstring ab dieser Position zurück.

Suche

v
3.2.3.3
dev.inf-schule.de/datenbanksysteme/gbuch/ausgabeverbessern/exkurs_funktionen
dev.inf-schule.de/3.2.3.3
dev.inf-schule.de/@/page/V1Q1V0SWqlYv1EqG

Rückmeldung geben