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

Oracle 11g での英数字文字列の並べ替え

    値の数値部分だけで質問の順序に示したものなので、次のように表示されます:

    TOKEN
    ------
    BRIP.1
    BRFL.1
    BRBF.1
    BR00.1
    BRRF.1
    BR00.2
    BRRF.2
    BRBF.2
    BR00.3
    BRRF.3
    BR01.1
    BR01.2
    BR06.1
    BR12.1
    BR13.2
    BR17.1
    BR120 
    BR121 
    BR132 
    

    アルファベット文字で並べ替え、次にその中の数字で並べ替える場合は、order by 句で 2 つの式を使用できます。したがって、最初のアルファベット セクションで並べ替え、次にすべてのアルファベット文字の後に残っているものから形成される数字で並べ替えます。取り除かれます:

    select * from sortest
    order by regexp_substr(token, '[[:alpha:]]*'),
      to_number(regexp_replace(token, '[[:alpha:]]', null));
    
    TOKEN
    ------
    BR00.1
    BR00.2
    BR00.3
    BR01.1
    BR01.2
    BR06.1
    BR12.1
    BR13.2
    BR17.1
    BR120 
    BR121 
    BR132 
    BRBF.1
    BRBF.2
    BRFL.1
    BRIP.1
    BRRF.1
    BRRF.2
    BRRF.3
    



    1. データベース全体で文字セット(および照合)を変更するにはどうすればよいですか?

    2. クエリの速度を向上させる方法は?

    3. PostgreSQL用のトップPGクラスタリング高可用性ソリューション

    4. java.sql.SQLSyntaxErrorException:不明な列.JPAエンティティの問題?