文字列(半角英字)と数値が組み合わさったレコードをソートしたい場合の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