Mysql
 sql >> база данни >  >> RDS >> Mysql

Използвайте чувствителен към акцент първичен ключ в MySQL

Колекция . Имате два избора, а не три:

utf8_bin третира всички тези като различни :demandé и demande и Demandé .

utf8_..._ci (обикновено utf8_general_ci или utf8_unicode_ci ) третира всички тези като едни и същи :demandé и demande и Demandé .

Ако искате само чувствителност към главни и малки букви (demandé =demande , но нито едно от тях не съответства на Demandé ), нямате късмет.

Ако искате само чувствителност на акцента (demandé =Demandé , но нито едно от тях не съответства на demande ), нямате късмет.

Декларация . Най-добрият начин да правите каквото изберете:

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

Не променяйте сортирането в движение . Това няма да използва индекса (тоест ще бъде бавно), ако съпоставянето е различно в name :

WHERE name = ... COLLATE ...

БИНАРНО . Типове данни BINARY , VARBINARY и BLOB са много подобни на CHAR , VARCHAR и TEXT с COLLATE ..._bin . Може би единствената разлика е, че текстът ще бъде проверен за валиден utf8 съхраняващ в VARCHAR ... COLLATE ..._bin , но няма да бъде проверено при съхранение в VARBINARY... . Сравнения (WHERE , ORDER BY и т.н.) ще бъде същото; тоест просто сравнявайте битовете, не правете сгъване на главни букви или премахване на акценти и т.н.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Поправете „ГРЕШКА 1250 (42000):Таблица „...“ от един от SELECT не може да се използва в глобалната клауза ORDER“, когато използвате UNION в MySQL

  2. Инструменти за визуализация на Mysql

  3. Примери за MySQL SOUNDEX().

  4. Настройка на външни ключове в phpMyAdmin?

  5. Как да промените пътя на mysql услугите