mysql - 对mysql中的排序规则感到困惑

标签 mysql collation

尽管关于这个主题的所有讨论,我都无法解决我对整理的困惑。

  1. 创建了一个数据库:

    CREATE DATABASE Desk_Database CHARACTER SET = utf8 COLLATE = utf8_unicode_ci;
    
  2. 创建了一个名为 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/

相关文章:

mysql - 具有无效 DDL 的 Flyway 迁移(对于 MySQL 5.6 有效)

mysql - 在 MySQL 中对 varchar 字段进行数字排序

mysql - 相似字符的唯一约束违规

shell - Unix区分大小写的UTF-8排序

mysql - 使用docker-compose无法在同一网络中连接mysql和spring boot

mysql - 无法在 MySQL 8.0 的 my.cnf 中找到绑定(bind)地址

javascript - MySQL 的时间验证范围

perl - AA 和丹麦校对有什么关系?

mysql - 当我的整个应用程序都使用 UTF-8 时,我应该使用哪种排序规则?

php - 与 utf8_general_ci 和 utf8_unicode_ci 混淆