1

このテーマについてのすべての議論にもかかわらず、私は照合で持っているパズルを解くことができません。

  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");
    

次のクエリを使用すると、1行が返されますが、 :Andréとは異なるため、行が見つからないはずです。Andre

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

わからないのは何ですか。utf8_unicode_ciアクセントを捨てないだろうと思いましたeが、どうやらそうです。

4

2 に答える 2

2

こちらのディスカッションをご覧ください。その議論に基づいて、照合をutf8_binに設定すると役立つ場合がありますが、基盤となるOS自体の設定と競合する可能性もあります。

HTH

于 2012-07-03T10:49:55.567 に答える
2

これは予想される動作です。「Andre」と「André」は、によると同等utf8_unicode_ciです。アクセントは捨てられません。2つの文字列が等しいかどうかを比較するときにeとéが同じであると見なされるだけです。

2つの異なるものを検討する場合は、などの他の照合を使用する必要がありますutf8_bin

于 2012-07-03T11:55:54.980 に答える