単純な選択クエリと特殊文字に問題があります。Änneという名前を選びたいです。
SELECT * FROM `names` WHERE `name` = 'Änne'
utf8_general_ci
- アンネ
- アン
わかった、 ...
utf8 general ci は非常に単純な照合です。すべてのアクセントを削除してから大文字に変換し、この種の「基本文字」の結果文字のコードを使用して比較します。 http://forums.mysql.com/read.php?103,187048,188748
utf8_unicode_ci
- アンネ
- アン
なぜ?
utf8_bin
- アンネ
この時点では utf8_bin が正しい選択のようですが、大文字と小文字を区別しないで検索する必要があります。
SELECT * FROM `names` WHERE `name` = 'änne'
utf8_bin
- なし
そうする方法はありませんか?
php ucwords() を使用して最初の文字を大文字にすることもできますが、DB ソリューションを見つけたいと思います。編集: ucwords('änne') = änne なので、それも使えません
SELECT * FROM `names` WHERE lower(`name`) = 'änne'
私のDBには「Änne」と「änne」の違いがないので、私のために働いています。