对mysql中的排序感到困惑

时间:2012-07-03 10:26:27

标签: mysql collation

尽管有关于这个主题的所有讨论,我无法通过整理来解决我的难题。

  1. 创建了一个DB:

    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");
    
  3. 现在,当使用以下查询时,它会返回一行,但由于AndréAndre不同,因此找不到任何行:

    SELECT klantgroep, typeuser FROM processors 
    WHERE naam = 'Andre' AND password = 'kkk';
    

    我不明白的是什么。我认为utf8_unicode_ci不会丢弃e上的重音,但显然确实如此。

2 个答案:

答案 0 :(得分:1)

this discussion here。基于该讨论,可能有助于将排序规则设置为utf8_bin,但也可能与底层操作系统本身的设置发生冲突。

HTH

答案 1 :(得分:1)

这是预期的行为:根据utf8_unicode_ci,“Andre”和“André”是等价的。重音不会被丢弃,只是在比较两个字符串是否相等时,e和é被认为是相同的。

如果您想考虑这两种不同,您必须使用其他一些排序规则,例如utf8_bin