Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Sortieren von alphanumerischen Zeichenfolgen in Oracle 11g

Was Sie in der Frage gezeigt haben, ordnet nur den numerischen Teil des Werts an, also sehen Sie so etwas wie:

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 

Wenn Sie nach den alphabetischen Zeichen und dann nach den darin enthaltenen Zahlen sortieren möchten, können Sie zwei Ausdrücke in der order by-Klausel verwenden – Sie sortieren also nach dem ersten alphabetischen Abschnitt und dann nach der Zahl, die aus dem übrig bleibt, nachdem alle alphabetischen Zeichen übrig geblieben sind werden entfernt:

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