Salut Paul Toth.
Envoyé par
Paul Toth
des données provenant d'une base SQL
Ne confondez pas SQL qui est un langage de requête, avec le nom de votre SGBD qui ici est de type relationnelle et porte le nom de MySql.
Pour résoudre votre problème de tri, vous devez déclarer dans votre table, le charset mais aussi le collate.
D'après ce que j'ai pu comprendre, vous désirez conserver la distinction entre "a" minuscule et "A" majuscule, donc sensible à la casse.
J'utilise LATIN1 et je désire que ma casse soit insensible aux minuscule et majuscule.
de ce fait, j'utilise comme collate "latin1_general_ci".
Si vous utilisez utf8 comme charset, vous devez mettre alors "utf8_general_cs".
Comment introduire le collate ?
Pour votre base de données :
1 2 3
| CREATE DATABASE `base`
DEFAULT CHARACTER SET `utf8`
DEFAULT COLLATE `utf8_general_cs`; |
Pour votre table :
1 2 3 4 5
| CREATE TABLE `parcours`
( ...
) ENGINE=InnoDB
DEFAULT CHARSET=`utf8` COLLATE=`utf8_general_cs`
ROW_FORMAT=COMPRESSED; |
Ceci est valable pour toutes les colonnes de types caractères de votre table.
Mais on peut le faire aussi que sur une seule colonne, par exemple, si votre choix du collate est différent de celui utilisé dans la table ou dans la base de données.
col VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_cs
Comment utilisez le collate dans un tri ?
S'il est déjà déclaré dans votre base de données ou dans votre table ou encore dans votre colonne, vous n'avez rien à faire
Dans le cas contraire, vous devez le précisez ainsi :
order by col collate utf8_general_cs
@+
Partager