MySQL hat viele Operatoren und Funktionen, die einen String zurückgeben. In diesem Abschnitt wollen wir die Frage beantworten, welchen Zeichensatz und welche Sortierfolge ein solcher String hat.
Bei einfachen Funktionen, die den String als Eingabe
entgegennehmen und einen String als Ergebnis ausgeben, sind
Zeichensatz und Sortierfolge des Ausgabe-Strings dieselben wie
beim ersten Eingabewert. Beispielsweise gibt
UPPER(
einen
String zurück, dessen Zeichensatz und Sortierfolge dieselben
sind wie bei X
)X
. Gleiches gilt für
INSTR()
, LCASE()
,
LOWER()
, LTRIM()
,
MID()
, REPEAT()
,
REPLACE()
, REVERSE()
,
RIGHT()
, RPAD()
,
RTRIM()
, SOUNDEX()
,
SUBSTRING()
, TRIM()
,
UCASE()
und UPPER()
.
Hinweis: Anders als alle anderen Funktionen ignoriert die
REPLACE()
-Funktion stets die Sortierfolge des
Eingabe-Strings und führt einen Vergleich mit Unterscheidung
der Groß-/Kleinschreibung durch.
Wenn ein Eingabe-String oder ein Funktionsergebnis einen
Binär-String zum Ergebnis haben, hat dieser String keinen
Zeichensatz und keine Sortierfolge. Dies kann mithilfe der
Funktionen CHARSET()
und
COLLATION()
überprüft werden, die beide
binary
zurückgeben, wenn das Argument ein
Binär-String ist:
mysql> SELECT CHARSET(BINARY 'a'), COLLATION(BINARY 'a');
+---------------------+-----------------------+
| CHARSET(BINARY 'a') | COLLATION(BINARY 'a') |
+---------------------+-----------------------+
| binary | binary |
+---------------------+-----------------------+
Bei Operationen, die mehrere Eingabe-Strings kombinieren und einen einzelnen Ausgabe-String zurückgeben, gelten die „Zusammenfassungsregeln“ des SQL-Standards zur Bestimmung der Sortierfolge des Ergebnisses:
Wenn eine explizite COLLATE
vorhanden ist, wird
X
X
verwendet.
Wenn explizite COLLATE
und X
COLLATE
auftreten, wird ein
Fehler zurückgegeben.
Y
Andernfalls wird, wenn alle Sortierfolgen
X
sind,
X
verwendet.
Ansonsten hat das Ergebnis keine Sortierfolge.
Beispielsweise ist bei CASE ... WHEN a THEN b WHEN b
THEN c COLLATE
die
resultierende Sortierfolge X
ENDX
.
Gleiches gilt für CASE
,
UNION
, ||
,
CONCAT()
, ELT()
,
GREATEST()
, IF()
und
LEAST()
.
Bei Operationen, die Zeichendaten umwandeln, werden der
Zeichensatz und die Sortierfolge der Strings, die sich aus
diesen Operationen ergeben, durch die Systemvariablen
character_set_connection
und
collation_connection
definiert. Dies gilt
für CAST()
, CHAR()
,
CONV()
, FORMAT()
,
HEX()
und SPACE()
.
Dies ist eine Übersetzung des MySQL-Referenzhandbuchs, das sich auf dev.mysql.com befindet. Das ursprüngliche Referenzhandbuch ist auf Englisch, und diese Übersetzung ist nicht notwendigerweise so aktuell wie die englische Ausgabe. Das vorliegende deutschsprachige Handbuch behandelt MySQL bis zur Version 5.1.