Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Rozwiązywanie problemów Nielegalna mieszanka błędów sortowania w mysql

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;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Eksportuj bazę danych MySQL do bazy danych SQLite

  2. Klasy zagnieżdżone — CustomRowMapper !! To już nie problem!! - Część 2

  3. Czy mysql_real_escape_string() jest uszkodzony?

  4. Zapytanie o wybór między serwerami MySQL

  5. Jak korzystać z ról, które zmieniły się w MySQL 8.0?