Chaque chaîne de caractères littérale a un jeu de caractères et une collation qui ne peut pas être nulle.
Une chaîne de caractères littérale peut avoir un
spécificateur optionnel de jeu de caractères optionnel et une
clause COLLATE
:
[_character_set_name]'string' [COLLATE collation_name]
Exemples :
SELECT 'string'; SELECT _latin1'string'; SELECT _latin1'string' COLLATE latin1_danish_ci;
La simple commande SELECT 'string'
utilise le
jeu de caractères par défaut de la connexion.
L'expression _character_set_name
est
formellement appelée un spécificateur
(introducer
). Elle indique à l'analyseur :
"la chaîne qui va suivre utilise le jeu de caractère
X
.'' Cela a été source de confusions par le
passé; aussi nous insistons sur le fait qu'un spécificateur ne
provoque pas de conversion. C'est strictement une indication,
qui ne change pas la valeur de la chaîne. Un spécificateur est
aussi autorisé avant des notations littérales hexadécimale et
numérique (x'literal'
et
0xnnnn
), et avant ?
(qui
est une substitution de paramètre lorsque l'on utilise des
commandes préparées avec une interface de langage de
programmation).
Exemples :
SELECT _latin1 x'AABBCC'; SELECT _latin1 0xAABBCC; SELECT _latin1 ?;
MySQL détermine le jeu de caractères et la collation de la fa¸on suivante :
Si, à la fois _X
et COLLATE
Y
ont été précisés, alors le jeu de
caractères est X
et la collation
littérale est Y
.
Si _X
est précisé mais que
COLLATE
ne l'est pas, alors le jeu de
caractères de la chaîne littérale est
X
et la collation est la collation par
défaut du jeu de caractères X
.
Sinon, on utilise le jeu de caractères et la collation par défaut de la connexion.
Exemples:
Une chaîne avec le jeu de caractères
latin1
et la collation
latin1_german1_ci
:
SELECT _latin1'Müller' COLLATE latin1_german1_ci;
Une chaîne avec le jeu de caractères
latin1
et sa collation par défaut, c'est
à dire latin1_swedish_ci
:
SELECT _latin1'Müller';
Une chaîne avec le jeu de caractère et la collation connexion/littérale :
SELECT 'Müller';
Les introducteurs de jeux de caractères et la clause
COLLATE
sont implémentés selon les
spécifications standard SQL.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.