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

Jak działać MySQL bez uwzględniania wielkości liter i akcentu w UTF-8?

Próbowałeś już użyć sortowania niewrażliwego na akcenty podczas wyszukiwania i zamawiania.

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

Chodzi o to, że Twój NAME Wydaje się, że kolumna jest zapisana w zestawie znaków latin1 (8-bitowych). Dlatego mySQL narzeka na ciebie w ten sposób:

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

Możesz uzyskać pożądane wyniki, jeśli spróbujesz

 WHERE CONVERT(p.NAME USING utf8) LIKE _utf8 '%jose%' COLLATE utf8_general_ci;

Ale bądź ostrożny!

Kiedy używasz dowolnego rodzaju funkcji (w tym przykładzie CONVERT) w kolumnie w wyrażeniu WHERE, pokonujesz próby MySQL mające na celu optymalizację wyszukiwania za pomocą indeksów. Jeśli ten projekt będzie duży (to znaczy, jeśli będziesz miał dużo wierszy w swoich tabelach), musisz przechowywać swoje dane w formacie utf8, a nie latin1. (Prawdopodobnie już wiesz, że Twój LIKE '%whatever%' Wyszukiwane hasło pokonuje również indeksowanie MySQL).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak ustawić parametry ORDER BY za pomocą przygotowanej instrukcji PDO?

  2. Kolejne rekordy SQL z liczbą

  3. Docker nie może połączyć się z niedziałającym kontenerem

  4. Uzyskiwanie dziennej liczby zdarzeń, które nie zdarzają się codziennie

  5. Wyświetl obraz BLOB Laravel 4