
Kapitel 7: MySQL-Sprachreferenz 403
mysql> select IF(0.1<>0,1,0);
-> 1
Im ersten Fall gibt IF(0.1) 0 zur¨uck, weil 0.1 in einen Ganzzahlwert umge-
wandelt wird, wodurch es auf IF(0) getestet wird. Das ist vielleicht nicht
das, was Sie erwarten. Im zweiten Fall testet der Vergleich den Original-
Fließkommawert, um zu sehen, ob er nicht 0 ist. Das Ergebnis des Vergleichs
wird als Ganzzahl benutzt.
Der vorgabem¨aßige R¨uckgabewert von IF() (der eine Rolle spielen kann, wenn
er in einer tempor¨aren Tabelle gespeichert wird), wird in MySQL-Version 3.23
wie folgt berechnet:
Ausdruck R¨uckgabewert
ausdruck2 oder ausdruck3 gibt Zeichenkette
zur¨uck
Zeichenkette
ausdruck2 oder ausdruck3 gibt Fließkommawert
zur¨uck
Fließkommawert
ausdruck2 oder ausdruck3 gibt Ganzzahl zur¨uck Ganzzahl
CASE wert WHEN [vergleichs-wert] THEN ergebnis [WHEN [vergleichs-wert] THEN
ergebnis ...] [ELSE ergebnis] END
CASE WHEN [bedingung] THEN ergebnis [WHEN [bedingung] THEN ergebnis ...] [ELSE
ergebnis] END
Die erste Version gibt ergebnis zur¨uck, wo wert=vergleichs-wert. Die zweite
Version gibt das Ergebnis f¨ur die erste Bedingung zur¨uck, die WAHR ist. Wenn
es keinen ¨ubereinstimmenden Ergebniswert gab, wird das Ergebnis nach ELSE
zur¨uckgegeb en. Wenn es keinen ELSE-Teil gibt, wird NULL zur¨uckgegeben:
mysql> SELECT CASE 1 WHEN 1 THEN "eins" WHEN 2 THEN "zwei" ELSE "mehr" END;
-> "eins"
mysql> SELECT CASE WHEN 1>0 THEN "wahr" ELSE "unwahr" END;
-> "wahr"
mysql> SELECT CASE BINARY "B" when "a" then 1 when "b" then 2 END;
-> NULL
Der Typ des R¨uckgabewerts (INTEGER, DOUBLE oder STRING) ist derselbe wie der Typ des
ersten zur¨uckgegebenen Werts (der Ausdruck nach dem ersten THEN).
7.3.2 Zeichenketten-Funktionen
Funktionen f¨ur Zeichenkettenwerte geben NULL zur¨uck, wenn die L¨ange des Ergebnisses
gr¨oßer w¨are als der max_allowed_packet-Serverparameter. Siehe Abschnitt 6.5.2 [Server
parameters], Seite 355.
Bei Funktionen, die mit Zeichenkettenpositionen arbeiten, wird die erste Position als 1
gez¨ahlt.
ASCII(zeichenkette)
Gibt den ASCII-Code-Wert des ¨außersten linken Zeichens der Zeichenkette
zeichenkette zur¨uck. Gibt 0 zur¨uck, wenn zeichenkette die leere Zeichen-
kette ist. Gibt NULL zur¨uck, wenn zeichenkette NULL ist:
Kommentare zu diesen Handbüchern