sql >> Database >  >> RDS >> Oracle

alpanumerieke strings sorteren in Oracle 11g

Wat je in de vraag hebt weergegeven, is gerangschikt op het numerieke deel van de waarde, dus je ziet zoiets als:

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 

Als u wilt ordenen op alfabetische tekens en vervolgens op de cijfers daarbinnen, kunt u twee uitdrukkingen gebruiken in de volgorde per clausule - dus u sorteert op de eerste alfabetische sectie en vervolgens op het getal dat is gevormd uit wat er overblijft na alle alfabetische tekens zijn uitgekleed:

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. Een wachtwoord uit een database verwijderen in Access 2016

  2. Hoe RTRIM_ORACLE() werkt in MariaDB

  3. Toestemming verlenen aan alleen een weergave

  4. Python MySQLdb - Fout 1045:Toegang geweigerd voor gebruiker