Нужно ли отмечать столбец MySQL varchar как двоичный файл при использовании сортировки utf8_bin? - PullRequest
2 голосов
/ 28 июля 2011

У меня есть таблица MySQL Table

CREATE TABLE `mytable` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `urlpt` varchar(100) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '' COMMENT 'Case sensitivity matters.',
  PRIMARY KEY (`id`),
  UNIQUE KEY `urlpt_UNIQUE` (`urlpt`),
  KEY `urlpt_INDEX` (`urlpt`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

и мне было интересно, должен ли я установить столбец urlpt в двоичном виде, потому что я использую сортировку utf8_bin. (Я хочу обрабатывать, например, a и á и â и т. Д. Как разные символы ...)

Ответы [ 2 ]

2 голосов
/ 28 июля 2011

Нет, ты не обязан. Если данные действительно UTF-8, то сохранить их как VARCHAR UTF-8, как вы сделали, хорошо.

И вы используете сопоставление, чтобы сказать MySQL, как все должно быть отсортировано / сравнено - как вы сделали.

У вас действительно была проблема?

0 голосов
/ 28 июля 2011

Нет; на самом деле вы должны установить его в 'utf8_general_ci'.

Разница в том, что utf8_bin чувствителен к регистру, а «A» - это нечто иное, чем «a», это означает, что если вы когда-либо сделаете запрос '... WHERE urlpt LIKE "F%B%"', он вернет только «FooBar», но не «foobar».

...