Detta orsakas vanligtvis av att två strängar av inkompatibel sortering jämförs eller genom att man försöker välja data från olika sortering till en kombinerad kolumn.
Klausulen COLLATE
låter dig ange sorteringen som används i frågan.
Till exempel följande WHERE
klausul kommer alltid att ge felet du postade:
WHERE 'A' COLLATE latin1_general_ci = 'A' COLLATE latin1_general_cs
Din lösning är att ange en delad sortering för de två kolumnerna i frågan. Här är ett exempel som använder COLLATE
klausul:
SELECT * FROM table ORDER BY key COLLATE latin1_general_ci;
Ett annat alternativ är att använda BINARY
operatör:
BINARY str är förkortningen för CAST(str AS BINARY).
Din lösning kan se ut ungefär så här:
SELECT * FROM table WHERE BINARY a = BINARY b;
eller,
SELECT * FROM table ORDER BY BINARY a;