Cela est généralement dû à la comparaison de deux chaînes de classement incompatible ou à la tentative de sélection de données de classement différent dans une colonne combinée.
La clause COLLATE
permet de spécifier le classement utilisé dans la requête.
Par exemple, le WHERE
suivant clause donnera toujours l'erreur que vous avez postée :
WHERE 'A' COLLATE latin1_general_ci = 'A' COLLATE latin1_general_cs
Votre solution consiste à spécifier un classement partagé pour les deux colonnes de la requête. Voici un exemple qui utilise le COLLATE
clause :
SELECT * FROM table ORDER BY key COLLATE latin1_general_ci;
Une autre option consiste à utiliser le BINARY
opérateur :
BINARY str est le raccourci pour CAST(str AS BINARY).
Votre solution pourrait ressembler à ceci :
SELECT * FROM table WHERE BINARY a = BINARY b;
ou,
SELECT * FROM table ORDER BY BINARY a;