有一个包含 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 |
| ù |
+------+
这里有什么问题吗?我怎样才能与这样的角色一起工作?
最佳答案
这与 mysql 比较值时使用的排序规则有关。如果运行以下查询,您将看到哪种排序规则有效:
show collation where Charset = 'utf8';
其中一个的默认
值应为yes
。就我而言,它是 utf8_general_ci
。此排序规则使用 Unicode 排序来将带重音符号和不带重音符号的字符等同起来。
如果您运行以下查询:
SELECT * FROM `tbl` WHERE `text` = 'ù' collate utf8_bin;
那么你只能返回一行。 MySQL documentation中有更多信息。 .
关于mysql - 选择 ù 等字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20595297/