Mysql
 sql >> Database >  >> RDS >> Mysql

Risoluzione dei problemi Mix illegale di errori di confronto in mysql

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;