Zwykle jest to spowodowane porównaniem dwóch niezgodnych ciągów sortowania lub próbą wybrania danych o różnym sortowaniu do połączonej kolumny.
Klauzula COLLATE
pozwala określić sortowanie użyte w zapytaniu.
Na przykład następujący WHERE
klauzula zawsze poda błąd, który zamieściłeś:
WHERE 'A' COLLATE latin1_general_ci = 'A' COLLATE latin1_general_cs
Rozwiązaniem jest określenie współdzielonego sortowania dla dwóch kolumn w zapytaniu. Oto przykład, w którym użyto COLLATE
klauzula:
SELECT * FROM table ORDER BY key COLLATE latin1_general_ci;
Inną opcją jest użycie BINARY
operator:
BINARY str to skrót od CAST(str AS BINARY).
Twoje rozwiązanie może wyglądać mniej więcej tak:
SELECT * FROM table WHERE BINARY a = BINARY b;
lub,
SELECT * FROM table ORDER BY BINARY a;