これは、da_DK.utf8
が原因です。 ロケールはそれをこのように定義します。 Linuxロケール対応ユーティリティ(sort
など) このようにも機能します。
convert_to(name, 'latin1')
€
など、ラテン1文字セットにない文字が見つかった場合は壊れます。 、したがって、これは適切な回避策ではありません。
order by convert_to(name, 'SQL_ASCII')
を使用できます 、ロケールで定義された並べ替えを無視し、単にバイト値を使用します。
醜いハック編集:
order by
(
ascii(name) between ascii('a') and ascii('z')
or ascii(name) between ascii('A') and ascii('Z')
or ascii(name)>127
),
name;
これにより、ASCIIの非文字で始まるものが最初にソートされます。文字列をさらに並べ替えると奇妙な動作をするため、これは非常に醜いですが、それで十分な場合もあります。