Jeux de caractères et collations de connexion
<<<
Jeu de caractères et collation des chaînes littérales Clause COLLATE dans différentes parties d'une requête SQL
>>>

11.3 Déterminer le jeu de caractères et la collation par défaut
11 Jeux de caractères et Unicode
 Manuel de Référence MySQL 4.1 : Version Française

Jeu de caractères et collation serveur
Jeu de caractères et collation de base de données
Jeu de caractères de tables et collation
Jeu de caractères de colonne et collation
Exemples d'attribution de jeu de caractères et collation
Jeux de caractères et collations de connexion
->Jeu de caractères et collation des chaînes littérales
Clause COLLATE dans différentes parties d'une requête SQL
COLLATE clause de précédence
Opérateur BINARY
Quelques cas spéciaux où la détermination de la collation est difficile
Les collation doivent correspondre au bon jeu de caractères
Un exemple de l'effet de collation

11.3.7 Jeu de caractères et collation des chaînes littérales

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.

<< Jeu de caractères et collation des chaînes littérales >>
Jeux de caractères et collations de connexion Déterminer le jeu de caractères et la collation par défaut Clause COLLATE dans différentes parties d'une requête SQL