Dies wird im Allgemeinen durch den Vergleich zweier Zeichenfolgen mit inkompatibler Sortierung oder durch den Versuch verursacht, Daten mit unterschiedlicher Sortierung in einer kombinierten Spalte auszuwählen.
Die Klausel COLLATE
ermöglicht es Ihnen, die in der Abfrage verwendete Sortierung anzugeben.
Zum Beispiel das folgende WHERE
-Klausel gibt immer den von Ihnen geposteten Fehler aus:
WHERE 'A' COLLATE latin1_general_ci = 'A' COLLATE latin1_general_cs
Ihre Lösung besteht darin, eine gemeinsame Sortierung für die beiden Spalten in der Abfrage anzugeben. Hier ist ein Beispiel, das COLLATE
verwendet Klausel:
SELECT * FROM table ORDER BY key COLLATE latin1_general_ci;
Eine andere Möglichkeit ist die Verwendung des BINARY
Betreiber:
BINARY str ist die Abkürzung für CAST(str AS BINARY).
Ihre Lösung könnte etwa so aussehen:
SELECT * FROM table WHERE BINARY a = BINARY b;
oder,
SELECT * FROM table ORDER BY BINARY a;