CASE- und IF-Ausdrücke in MySQL
IF
DROP SCHEMA S; CREATE SCHEMA S; USE S;
CREATE TABLE PERSON ( NACHNAME VARCHAR ( 255 ), VORNAME VARCHAR ( 255 ), DUZEN BOOL, WEIBLICH BOOL );
INSERT INTO PERSON ( NACHNAME, VORNAME, DUZEN, WEIBLICH ) VALUES ( 'Franzen', 'Marlene', TRUE, TRUE );
INSERT INTO PERSON ( NACHNAME, VORNAME, DUZEN, WEIBLICH ) VALUES ( 'Horten', 'Kristina', TRUE, TRUE );
INSERT INTO PERSON ( NACHNAME, VORNAME, DUZEN, WEIBLICH ) VALUES ( 'Zurk', 'Jutta', FALSE, TRUE );
INSERT INTO PERSON ( NACHNAME, VORNAME, DUZEN, WEIBLICH ) VALUES ( 'Leif', 'Rudi', FALSE, FALSE );
INSERT INTO PERSON ( NACHNAME, VORNAME, DUZEN, WEIBLICH ) VALUES ( 'Roos', 'Petra', FALSE, TRUE );
INSERT INTO PERSON ( NACHNAME, VORNAME, DUZEN, WEIBLICH ) VALUES ( 'Willems', 'Manfred', TRUE, FALSE );
INSERT INTO PERSON ( NACHNAME, VORNAME, DUZEN, WEIBLICH ) VALUES ( 'Hens', 'Klemens', FALSE, FALSE );
INSERT INTO PERSON ( NACHNAME, VORNAME, DUZEN, WEIBLICH ) VALUES ( 'Bauer', 'Mirco', FALSE, FALSE );
INSERT INTO PERSON ( NACHNAME, VORNAME, DUZEN, WEIBLICH ) VALUES ( 'Schmitz', 'Karl', TRUE, FALSE );
INSERT INTO PERSON ( NACHNAME, VORNAME, DUZEN, WEIBLICH ) VALUES ( 'Theissen', 'Marina', FALSE, TRUE );
SELECT * FROM PERSON;+----------+----------+-------+----------+
| NACHNAME | VORNAME | DUZEN | WEIBLICH |
+----------+----------+-------+----------+
| Franzen | Marlene | 1 | 1 |
| Horten | Kristina | 1 | 1 |
| Zurk | Jutta | 0 | 1 |
| Leif | Rudi | 0 | 0 |
| Roos | Petra | 0 | 1 |
| Willems | Manfred | 1 | 0 |
| Hens | Klemens | 0 | 0 |
| Bauer | Mirco | 0 | 0 |
| Schmitz | Karl | 1 | 0 |
| Theissen | Marina | 0 | 1 |
+----------+----------+-------+----------+SELECT IF( DUZEN, VORNAME, CONCAT( IF( WEIBLICH, 'Frau', 'Herr' ), ' ', NACHNAME )) AS ANREDE FROM PERSON;
+---------------+
| ANREDE |
+---------------+
| Marlene |
| Kristina |
| Frau Zurk |
| Herr Leif |
| Frau Roos |
| Manfred |
| Herr Hens |
| Herr Bauer |
| Karl |
| Frau Theissen |
+---------------+
CASE mit „CASE + Ausdruck“
Kunde
Kennung Vorname Nachname Geschlecht
0 Mia Schmidt w
1 Hannah Schmidt w
2 Leon Weber m
SELECT Vorname,
CASE Geschlecht
WHEN 'w' THEN 'weiblich'
WHEN 'm' THEN 'maennlich'
ELSE 'unbekannt'
END
AS 'Geschlecht'
FROM Kunde
Vorname Geschlecht
Mia weiblich
Hannah weiblich
Leon maennlich
Oben wurden keine Umlaute verwendet, da diese in seltenen Fällen Probleme bereiten könnten.
Die WHEN-Klauseln können beliebig oft wiederholt werden, die ELSE-Klausel ist optional (kann auch entfallen).
CASE mit „WHEN + Ausdruck
Das folgende Beispiel zeigt eine Variante, bei welcher der Feldname nicht nach dem »CASE«, sondern nach jedem »WHEN« steht. In diesem Fall muß nicht nach jedem »WHEN« derselbe Feldname verwendet werden.
Kunde
Kennung Vorname Nachname Mann Frau
0 Mia Schmidt x
1 Hannah Schmidt x
2 Leon Weber x
SELECT Vorname,
CASE
WHEN Frau='x' THEN 'weiblich'
WHEN Mann='x' THEN 'maennlich'
ELSE 'unbekannt'
END
AS 'Geschlecht'
FROM Kunde
Vorname Geschlecht
Mia weiblich
Hannah weiblich
Leon maennlich