To je obecně způsobeno porovnáváním dvou řetězců nekompatibilního řazení nebo pokusem o výběr dat různého řazení do kombinovaného sloupce.
Klauzule COLLATE
umožňuje určit řazení použité v dotazu.
Například následující WHERE
klauzule vždy uvede chybu, kterou jste odeslali:
WHERE 'A' COLLATE latin1_general_ci = 'A' COLLATE latin1_general_cs
Řešením je zadat sdílené řazení pro dva sloupce v dotazu. Zde je příklad, který používá COLLATE
klauzule:
SELECT * FROM table ORDER BY key COLLATE latin1_general_ci;
Další možností je použít BINARY
operátor:
BINARY str je zkratka pro CAST(str AS BINARY).
Vaše řešení může vypadat nějak takto:
SELECT * FROM table WHERE BINARY a = BINARY b;
nebo,
SELECT * FROM table ORDER BY BINARY a;