Manchmal gibt es den Wunsch, Daten in einer SQL-Abfrage direkt bei Abfrage/Ausgabe anzupassen. Z.B. wenn man sich in der Nachverarbeitung einen Schritt sparen möchte. Zwei Hilfsmittel bestehen mit den Ausdrücken CASE und IF. Möchte man z.B. Werte vor der Ausgabe umbenennen, so kann der CASE-Ausdruck helfen.

Beispiel:
In einer Pizzadatenbank liegt die Information, ob eine Pizza vegetarisch ist, als ‚ja‘ oder ’nein‘ vor.
In der Ausgabe soll aber explizit ‚vegetarisch‘ oder gar nix stehen.

Ich gehe mal von dieser Tabelle aus :

diameter pizza veggie
17 Tonno no
18 Quattro Stagioni no
17 Prosciutto no
18 Hawaii no
18 Bolognese no
35 Peperoni yes
36 Margherita yes
18 Spinaci yes
38 Vegetale yes

Das könnte man dann so machen:

SELECT pizza,
CASE veggie WHEN 'yes' THEN 'vegetarisch'
ELSE '' END AS 'veggie'
FROM `mydb`

Dann kommt man zu dieser Ausgabe:

pizza veggie
Tonno
Quattro Stagioni
Prosciutto
Hawaii
Bolognese
Peperoni vegetarisch
Margherita vegetarisch
Spinaci vegetarisch
Vegetale vegetarisch

Möchte man nun noch je nach Durchmesser der Pizza eine Bezeichnung gross/klein vergeben, so ist dies wegen der Schwankungen in der Größenangabe nicht mehr so leicht mit CASE zu regeln, da die Vergleichsoperatoren größer (>) und kleiner (<) hier nicht funktionieren. Mit einem zusätzlichen IF-Ausdruck kann, je nach Durchmesser, eine Einteilung in gross oder klein vorgenommen werden:
SELECT pizza,
CASE veggie WHEN ‚yes‘ THEN ‚vegetarisch‘
ELSE “ END AS ‚veggie‘ ,
IF(diameter >30, ‚gross‘, ‚klein‘) AS groesse
FROM `mydb`

Hierbei werden dem IF drei Parameter mitgegeben.
– Bedingungsausdruck
– Ausdruck, wenn Bedingungsausdruck wahr
– Ausdruck, wenn Bedingungsausdruck nicht wahr

Wir erhalten somit folgende Ergebnistabelle:

pizza veggie groesse
Tonno klein
Quattro Stagioni klein
Prosciutto klein
Hawaii klein
Bolognese klein
Peperoni vegetarisch gross
Margherita vegetarisch gross
Spinaci vegetarisch klein
Vegetale vegetarisch gross