Ciò è generalmente causato dal confronto di due stringhe di regole di confronto incompatibili o dal tentativo di selezionare dati di regole di confronto diverse in una colonna combinata.
La clausola COLLATE
consente di specificare le regole di confronto utilizzate nella query.
Ad esempio, il seguente WHERE
la clausola darà sempre l'errore che hai pubblicato:
WHERE 'A' COLLATE latin1_general_ci = 'A' COLLATE latin1_general_cs
La soluzione è specificare un confronto condiviso per le due colonne all'interno della query. Ecco un esempio che utilizza COLLATE
clausola:
SELECT * FROM table ORDER BY key COLLATE latin1_general_ci;
Un'altra opzione è usare il BINARY
operatore:
BINARY str è l'abbreviazione di CAST(str AS BINARY).
La tua soluzione potrebbe assomigliare a questa:
SELECT * FROM table WHERE BINARY a = BINARY b;
o,
SELECT * FROM table ORDER BY BINARY a;