Това обикновено се причинява от сравняване на два низа с несъвместимо съпоставяне или от опит за избор на данни от различно съпоставяне в комбинирана колона.
Клаузата 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;