有一张包含2条记录的表格 - u
和ù
:
CREATE TABLE `tbl` (`text` text NOT NULL) ENGINE=MyISAM DEFAULT CHARSET=utf8;
INSERT INTO `tbl` (`text`) VALUES ('u'), ('ù');
我想用ù:
选择行SELECT * FROM `tbl` WHERE `text` = 'ù';
结果是
+------+
| text |
+------+
| u |
| ù |
+------+
这是什么问题?我该如何处理这些角色?
答案 0 :(得分:4)
这与mysql比较值时使用的排序规则有关。如果运行以下查询,您将看到哪个排序规则有效:
show collation where Charset = 'utf8';
其中一个的Default
值应为yes
。就我而言,它是utf8_general_ci
。此排序规则使用Unicode排序将字符与重音和不包含重音的字符等同。
如果您运行以下查询:
SELECT * FROM `tbl` WHERE `text` = 'ù' collate utf8_bin;
然后你只会回来一行。 MySQL documentation中有更多信息。