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

Oracle:SQLクエリで自然な順序付けを実装するにはどうすればよいですか?

    order-by句で関数を使用できます。この場合、フィールドの非数値部分と数値部分を分割して、それらを2つの順序付け基準として使用できます。

    select * from t
     order by to_number(regexp_substr(a,'^[0-9]+')),
              to_number(regexp_substr(a,'[0-9]+$')),
              a;
    

    これをサポートする関数ベースのインデックスを作成することもできます:

    create index t_ix1
        on t (to_number(regexp_substr(a, '^[0-9]+')),
              to_number(regexp_substr(a, '[0-9]+$')), 
              a);
    


    1. Rails-複数の関係にわたってデータを効率的にプルして計算します

    2. ネストされたテーブルに RowId 値を含める

    3. Windows7へのOracle12cEnterpriseEditionのインストール

    4. MySQLのインデックスを理解する:パート2