Dette er generelt forårsaget af sammenligning af to strenge af inkompatibel sortering eller ved at forsøge at vælge data fra forskellig sortering i en kombineret kolonne.
Klausulen COLLATE
giver dig mulighed for at angive den sortering, der bruges i forespørgslen.
For eksempel følgende WHERE
klausulen vil altid give den fejl, du sendte:
WHERE 'A' COLLATE latin1_general_ci = 'A' COLLATE latin1_general_cs
Din løsning er at angive en delt sortering for de to kolonner i forespørgslen. Her er et eksempel, der bruger COLLATE
klausul:
SELECT * FROM table ORDER BY key COLLATE latin1_general_ci;
En anden mulighed er at bruge BINARY
operatør:
BINARY str er forkortelsen for CAST(str AS BINARY).
Din løsning kan se sådan ud:
SELECT * FROM table WHERE BINARY a = BINARY b;
eller,
SELECT * FROM table ORDER BY BINARY a;