MySQLクエリのアルファベット順の並べ替え順序をカスタマイズしたいと思います。マルタ語では、 ċ、ġ、ħ、żの文字とともに標準のラテンアルファベットが使用されます。ċはc(など)と同じではないutf8_bin
ため、照合を使用します。これにより、を使用すると、文字は次の順序で処理されます。ORDER BY
a b c d e f g h i j k l m n o p q r s t u v w x y z ċ ġ ħ ż
しかし、私は彼らにこの順序を持たせるように要求します:
a b ċ c d e f ġ g h ħ i j k l m n o p q r s t u v w x y ż z
つまり、昇順では、「abċ 」は「 abz 」の前に来る必要がありますが、文字の2進値を比較しているだけなので、現在は後になっています。MySQLでこのカスタム順序を実現する方法はありますか?
私はこのような解決策を見てきましたORDER BY FIELD(name, 'a', 'b', 'ċ', ...)
が、これはこの場合には当てはまらないようです。
また、次のように、order関数に照合を追加しようとしましたORDER BY radicals COLLATE utf8_unicode_ci
が、これは基本的にアクセント付きの文字を同一として扱います。したがって、「 aċd」、「ace」、「aċf 」のような並べ替えられた文字列を取得しますが、それも間違っています(「aċd」、「aċf」、「ace」である必要があります)。
私のフォールバックプランはもちろんPHPでソートを行うことですが、MySQL自体にソートを維持できれば、かなりきれいになります。何か案は?