Benutzerdefinierte Variablen in MySQL

MySQL unterstützt Variablen anscheinend bereits seit Version 3.23.6, aber ich habe diese Möglichkeit (ausserhalb von Stored Procedures) erst vor ein paar Monaten zu Kenntnis genommen und erst gestern wirklich wahrgenommen.
Es gibt ja in der Tat immer wieder Fälle, in denen Variablen einem die Arbeit erheblich erleichtern würden.

Wenn man zum Beispiel zwei Felder ‚datum‘ und ‚uhrzeit‘ hat, und diese per Select zu einem Feld mit dem Alias ‚datum_zeit‘ zusammenfassen möchte, aber gleichzeitig in einem weiteren Feld ‚abgelaufen‘ feststellen möchte, ob der Zeitpunkt des Datensatzes bereits vorrüber ist, musste ich das bisher so machen:

SELECT CONCAT(datum,‘ ‚,uhrzeit) AS datum_zeit,
IF (CONCAT(datum,‘ ‚,uhrzeit) < NOW(), 1, 0) AS abgelaufen
FROM tabelle

Mit Variablen verkürzt sich der Query folgendermassen:

SELECT @v:=CONCAT(datum,‘ ‚,uhrzeit ) AS datum_zeit,
IF (@v < NOW(), 1, 0) AS abgelaufen
FROM tabelle

Ich muss also nicht mehr den CONCAT-Teil wiederholen, sondern kann ihn in der Variable @v speichern und darf diese Variable sofort verwenden. Im Gegensatz zum Alias, denn der ist frühestens im GROUP-BY-Abschnitt verfügbar .

Hier die offizielle MySQL-Dokumentation zu dem Thema: User-Defined Variables

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>