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

Użyj klucza podstawowego wrażliwego na akcent w MySQL

Zbiory . Masz dwie możliwości, a nie trzy:

utf8_bin traktuje je wszystkie jako różne :demandé i demandé i Demandé .

utf8_..._ci (zazwyczaj utf8_general_ci lub utf8_unicode_ci ) traktuje je wszystkie jako takie same :demandé i demandé i Demandé .

Jeśli chcesz rozróżniać tylko wielkość liter (demandé =demandé , ale nie pasuje do Demandé ), nie masz szczęścia.

Jeśli chcesz tylko czułość akcentu (demandé =Demandé , ale nie pasuje do demandé ), nie masz szczęścia.

Deklaracja . Najlepszy sposób na zrobienie tego, co wybierzesz:

CREATE TABLE (
    name VARCHAR(...)  CHARACTER SET utf8  COLLATE utf8_...  NOT NULL,
    ...
    PRIMARY KEY(name)
)

Nie zmieniaj sortowania w locie . To nie użyje indeksu (to znaczy będzie powolne), jeśli sortowanie jest inne w name :

WHERE name = ... COLLATE ...

BINARNY . typy danych BINARY , VARBINARY i BLOB są bardzo podobne do CHAR , VARCHAR i TEXT z COLLATE ..._bin . Być może jedyną różnicą jest to, że tekst zostanie sprawdzony pod kątem prawidłowego przechowywania utf8 w VARCHAR ... COLLATE ..._bin , ale nie będzie sprawdzane podczas przechowywania w VARBINARY... . Porównania (WHERE , ORDER BY itd.) będą takie same; to znaczy po prostu porównaj bity, nie zaginaj koperty ani nie usuwaj akcentów itp.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP date('W') vs MySQL YEARWEEK(now())

  2. Typ danych SQL do przechowywania wersji kompilacji

  3. Autostart MySQL Server w systemie Mac OS X Yosemite/El Capitan

  4. Jak uzyskać rekordy z ostatnich 7 dni w MySQL?

  5. Wpływ na wydajność zezwolenia na użycie aliasu w klauzuli HAVING