sql >> Databasteknik >  >> RDS >> Mysql

Felsökning Olaglig blandning av sorteringsfel i mysql

Detta orsakas vanligtvis av att två strängar av inkompatibel sortering jämförs eller genom att man försöker välja data från olika sortering till en kombinerad kolumn.

Klausulen COLLATE låter dig ange sorteringen som används i frågan.

Till exempel följande WHERE klausul kommer alltid att ge felet du postade:

WHERE 'A' COLLATE latin1_general_ci = 'A' COLLATE latin1_general_cs

Din lösning är att ange en delad sortering för de två kolumnerna i frågan. Här är ett exempel som använder COLLATE klausul:

SELECT * FROM table ORDER BY key COLLATE latin1_general_ci;

Ett annat alternativ är att använda BINARY operatör:

BINARY str är förkortningen för CAST(str AS BINARY).

Din lösning kan se ut ungefär så här:

SELECT * FROM table WHERE BINARY a = BINARY b;

eller,

SELECT * FROM table ORDER BY BINARY a;


  1. Java lagrad procedur anropar i java-program

  2. Vad är skillnaden mellan pls_integer och binary_integer?

  3. 2 sätt att returnera alla användardefinierade funktioner i en SQL Server-databas

  4. Finns det en Entity Framework 7 Database-First POCO Generator?