LoginSignup
8
5

More than 5 years have passed since last update.

Oracleで文字列+数値の自然数ソート

Posted at

文字列(半角英字)と数値が組み合わさったレコードをソートしたい場合のORDER BY句。
カラムはVARCHAR2型を想定。

データとして「CODE1、CODE2、CODE3、CODE4、CODE10、CODE20、CODE100」があるとして、通常はソートすると以下のようになる。

 ORDER BY カラム名
結果
CODE1
CODE10
CODE100
CODE2
CODE20
CODE3
CODE4

自然数ソートしたい場合は以下のようにする。

 ORDER BY REGEXP_SUBSTR(カラム名, '^([a-z]|[A-Z])+'), TO_NUMBER( REGEXP_SUBSTR(カラム名, '[0-9]+$') )
結果
CODE1
CODE2
CODE3
CODE4
CODE10
CODE20
CODE100
8
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
5