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

Fejlfinding Ulovlig blanding af sorteringsfejl i mysql

Dette er generelt forårsaget af sammenligning af to strenge af inkompatibel sortering eller ved at forsøge at vælge data fra forskellig sortering i en kombineret kolonne.

Klausulen COLLATE giver dig mulighed for at angive den sortering, der bruges i forespørgslen.

For eksempel følgende WHERE klausulen vil altid give den fejl, du sendte:

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

Din løsning er at angive en delt sortering for de to kolonner i forespørgslen. Her er et eksempel, der bruger COLLATE klausul:

SELECT * FROM table ORDER BY key COLLATE latin1_general_ci;

En anden mulighed er at bruge BINARY operatør:

BINARY str er forkortelsen for CAST(str AS BINARY).

Din løsning kan se sådan ud:

SELECT * FROM table WHERE BINARY a = BINARY b;

eller,

SELECT * FROM table ORDER BY BINARY a;


  1. Give privilegier på fremtidige borde i PostgreSQL?

  2. Beregning af afstand mellem to punkter (breddegrad, længdegrad)

  3. Er det dårligt design at bruge arrays i en database?

  4. Benchmarking Managed PostgreSQL Cloud Solutions - Del 1:Amazon Aurora