sql >> Databáze >  >> RDS >> Mysql

Jak MySQL pracovat s rozlišením malých a velkých písmen a bez ohledu na přízvuk v UTF-8

Již jste se pokusili pro vyhledávání a objednávání použít třídění bez zvýraznění.

http://dev.mysql.com/doc /refman/5.0/en/charset-collation-implementations.html

Jde o to, že vaše NAME Zdá se, že sloupec je uložen ve znakové sadě latin1 (8 bitů). Proto na vás mySQL reptá takto:

  COLLATION 'utf8_general_ci' is not valid for CHARACTER SET 'latin1'

Pokud to zkusíte

, můžete dosáhnout požadovaných výsledků
 WHERE CONVERT(p.NAME USING utf8) LIKE _utf8 '%jose%' COLLATE utf8_general_ci;

Ale pozor!

Když použijete jakýkoli druh funkce (v tomto příkladu CONVERT) ve sloupci v příkazu WHERE, překazíte pokusy MySQL optimalizovat vaše vyhledávání pomocí indexů. Pokud se tento projekt bude zvětšovat (to znamená, pokud budete mít v tabulkách mnoho řádků), musíte svá data ukládat ve formátu utf8, nikoli latin1. (Pravděpodobně už víte, že vaše LIKE '%whatever%' hledaný výraz také překonává indexování MySQL.)



  1. Spojení dvou podobných tabulek v MySQL

  2. NodeJS/mySQL - ER_ACCESS_DENIED_ERROR Přístup odepřen uživateli 'root'@'localhost' (s použitím hesla:ANO)

  3. Jak získám ID po INSERT do databáze MySQL pomocí Pythonu?

  4. Oracle na PostgreSQL:ZAČNĚTE S / PŘIPOJTE SE