使用utf8_bin校对时,是否必须将MySQL varchar列标记为二进制?

时间:2011-07-28 02:22:31

标签: mysql binary collation

我有一张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 个答案:

答案 0 :(得分:2)

不,你不必。如果数据确实是UTF-8,那么将其存储为UTF-8 VARCHAR就好了。

你使用整理来告诉MySQL应该如何分类/比较事物 - 正如你所做的那样。

你确实遇到过问题吗?

答案 1 :(得分:0)

没有;实际上你应该把它设置为'utf8_general_ci'。

不同之处在于utf8_bin区分大小写,而'A'除了'a'以外的其他内容,这意味着如果你进行查询'... WHERE urlpt LIKE "F%B%"'那么它只返回'FooBar',而不是'foobar ”。