sql >> Databasteknik >  >> RDS >> Oracle

sortering av alpanumeriska strängar i Oracle 11g

Det du har visat i frågeordningen bara efter den numeriska delen av värdet, så du ser något som:

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 

Om du vill sortera efter de alfabetiska tecknen och sedan efter siffrorna inom dessa, kan du använda två uttryck i ordningen efter sats - så du sorterar efter den första alfabetiska sektionen och sedan efter siffran som bildas av det som finns kvar efter alla alfabetiska tecken tas bort:

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. Konvertera 'smalldatetime' till 'time' i SQL Server (T-SQL-exempel)

  2. Hur man infogar poster från tabell till en annan utan dubbletter

  3. hur man laddar upp mer än en bild till servern (mysql-databas) med php och android

  4. JDBC Thin Oracle 11g