sql >> データベース >  >> RDS >> PostgreSQL

PostgreSQLは注文時にダッシュを無視します

    これは、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の非文字で始まるものが最初にソートされます。文字列をさらに並べ替えると奇妙な動作をするため、これは非常に醜いですが、それで十分な場合もあります。



    1. Oracleストアドプロシージャとカスタムデータ型

    2. MySQLシングルクエリは3つのテーブルを結合し、すべての結果を取得します

    3. 他のpostgresqlスキーマにデータフレームを書き込むパンダ

    4. パフォーマンステストの方法論:新しい方法の発見