尽管关于这个主题的所有讨论,我都无法解决我对整理的困惑。
创建了一个数据库:
CREATE DATABASE Desk_Database CHARACTER SET = utf8 COLLATE = utf8_unicode_ci;
创建了一个名为 Users 的表并插入了以下数据:
INSERT INTO Users (KlantGroep, TypeUser, Naam, Password) VALUES ("BNOF", "Manager", "André", "kkk"); INSERT INTO Users (KlantGroep, TypeUser, Naam, Password) VALUES ("BNOF", "User", "Ingrid", "ppp");
现在,当使用以下查询时,它会返回一行,但它不会找到任何行,因为 André
与 Andre
不同:
SELECT klantgroep, typeuser FROM processors
WHERE naam = 'Andre' AND password = 'kkk';
这是什么,我不明白。我认为 utf8_unicode_ci
不会去掉 e
上的重音,但它显然会。
最佳答案
这是预期的行为:根据 utf8_unicode_ci
,“Andre”和“André”是等价的。重音并没有被丢弃,只是在比较两个字符串是否相等时 e 和 é 被认为是相同的。
如果你想考虑两者的不同,你必须使用一些其他的排序规则,例如 utf8_bin
。
关于mysql - 对mysql中的排序规则感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11308967/