Oracle
 sql >> Baza danych >  >> RDS >> Oracle

sortowanie ciągów alfanumerycznych w Oracle 11g

To, co pokazałeś w pytaniu, jest uporządkowane według liczbowej części wartości, więc zobaczysz coś takiego:

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 

Jeśli chcesz uporządkować według znaków alfabetu, a następnie według liczby w nich, możesz użyć dwóch wyrażeń w kolejności według klauzuli - więc porządkujesz według pierwszej sekcji alfabetu, a następnie według liczby utworzonej z tego, co zostało po wszystkich znakach alfabetu są usunięte:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak rozpoznać, który plik tnsnames.ora jest używany przez wywołanie .net?

  2. Błąd porównania PL/SQL w wyzwalaczu (PLS-00405)

  3. CURSOR i REF CURSOR jako typ danych JDBC

  4. Jak uzyskać listę zablokowanych użytkowników w bazie danych Oracle?

  5. Jaki jest odpowiednik Oracle REF CURSOR w MySQL podczas korzystania z JDBC?