Jeder Zeichen-String-Literal hat einen Zeichensatz und eine Sortierfolge.
Ein String-Literal weist unter Umständen eine optionale
Zeichensatzeinführung und eine
COLLATE
-Klausel auf:
[_charset_name
]'string
' [COLLATEcollation_name
]
Ein paar Beispiele:
SELECT 'string
'; SELECT _latin1'string
'; SELECT _latin1'string
' COLLATE latin1_danish_ci;
Für die einfache Anweisung SELECT
'
werden Zeichensatz
und Sortierfolge des Strings definiert von den Systemvariablen
string
'character_set_connection
und
collation_connection
.
Der Ausdruck
_
heißt formal Einführung. Die Einführung
zeigt dem Parser an, dass der nachfolgende String den
Zeichensatz charset_name
X
verwendet. Da dies in
der Vergangenheit zu Verwirrung bei Benutzern geführt hat,
wollen wir an dieser Stelle betonen, dass eine Einführung keine
Konvertierung zur Folge hat – es handelt sich lediglich um ein
Signal, das den Wert des Strings nicht ändert. Eine Einführung
ist auch zulässig vor der standardmäßigen und der numerischen
hexadezimalen Literalnotation
(x'
bzw.
literal
'0x
) sowie vor
nnnn
?
(Parameterersetzung bei der Verwendung
vorbereiteter Anweisungen innerhalb einer
Programmiersprachen-Schnittstelle).
Ein paar Beispiele:
SELECT _latin1 x'AABBCC'; SELECT _latin1 0xAABBCC; SELECT _latin1 ?;
MySQL wählt Zeichensatz und Sortierfolge eines Literals auf folgende Weise:
Wenn sowohl _X
als auch
COLLATE
angegeben werden, dann werden der Zeichensatz
Y
X
und die Sortierfolge
Y
eingestellt.
Wenn _X
angegeben ist,
COLLATE
aber nicht, dann wird der
Zeichensatz X
mit der
Standardsortierfolge verwendet.
Andernfalls werden als Zeichensatz und Sortierfolge die
Werte der Systemvariablen
character_set_connection
bzw.
collation_connection
gesetzt.
Ein paar Beispiele:
Ein String mit dem Zeichensatz latin1
und
der Sortierfolge latin1_german1_ci
:
SELECT _latin1'Müller' COLLATE latin1_german1_ci;
Ein String mit dem Zeichensatz latin1
und
der Standardsortierfolge
(latin1_swedish_ci
):
SELECT _latin1'Müller';
Ein String mit Standardzeichensatz und -sortierfolge der Verbindung:
SELECT 'Müller';
Zeichensatzeinführungen und die
COLLATE
-Klausel sind entsprechend den
Spezifikationen des SQL-Standards implementiert.
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.