Това обикновено се причинява от сравняване на два низа с несъвместимо съпоставяне или от опит за избор на данни от различно съпоставяне в комбинирана колона.
Клаузата COLLATE ви позволява да посочите съпоставянето, използвано в заявката.
Например следният WHERE клаузата винаги ще дава грешката, която сте публикували:
WHERE 'A' COLLATE latin1_general_ci = 'A' COLLATE latin1_general_cs
Вашето решение е да посочите споделено съпоставяне за двете колони в заявката. Ето пример, който използва COLLATE клауза:
SELECT * FROM table ORDER BY key COLLATE latin1_general_ci;
Друга възможност е да използвате BINARY оператор:
BINARY str е съкращението за CAST(str AS BINARY).
Вашето решение може да изглежда така:
SELECT * FROM table WHERE BINARY a = BINARY b;
или,
SELECT * FROM table ORDER BY BINARY a;