クエリが正しい並べ替え順序を返すように、使用するエンコーディングと照合について混乱しています。
現在、私のエンコーディングはfirstname
とlastname
の両方でUTF-8 Unicode
と照合順序utf8_unicode_ci
です。
そして、ソート順は次のようになります:
firstname lastname
aaa aaa
ööö ööö
ooo ooo
ppp ppp
qqq qqq
ööö ööö
はqqq qqq
より後にする必要があります
照合順序をutf8_swedish_ci
に変更すると、正しく機能します。
firstname lastname
aaa aaa
ooo ooo
ppp ppp
qqq qqq
ööö ööö
しかし、utf8_unicode_520_ci
はutf8_unicode_ci
と同じ結果を返します。うまくいきませんか?
おもしろいのは、firstname
照合順序をutf8_unicode_520_ci
に変更するだけで機能するようだということです。
興味深いことに、誰かがこの明らかな違いに対処しました。
Matthias Bynensがこの投稿に回答しました MySQL Collation utf8_unicode違い 約4年前。
彼は「ウェイトキー」に言及しました
詳細については、 nicode Consortium にアクセスしてください。
Öはどこでソートしますか?
これらは、utf8とutf8mb4、MySQL 8.0以前の両方に適用されます。
デンマーク語、アイスランド語、またはスウェーデン語は、「Ö」に対して「正しく」機能します。これら3つの違いは次のとおりです。
アイスランド語で、AZ < Á < B, E < É, IZ < Í < J, UZ < Ü < V, YZ < Ý < Z
。また
danish: zz < Ä=Æ=ä=æ < Ö=Ø=ö=ø < Aa=Å=å < Þ=þ
icelandic: zz < Þ=þ < Ä=Æ=ä=æ < Ö=Ø=ö=ø < Å=å
swedish: zz < Å=å < Ä=Æ=ä=æ < Ö=Ø=ö=ø < Þ=þ
(これはすべての違いがあるとは限りません。)