Oracle
 sql >> база данни >  >> RDS >> Oracle

сортиране на буквено-цифрови низове в Oracle 11g

Това, което сте показали във въпросите, подрежда само по числовата част от стойността, така че ще видите нещо като:

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 

Ако искате да подредите по азбучните знаци и след това по числата в тях, можете да използвате два израза в клаузата за подреждане по - така че подреждате по първата азбучна секция и след това по числото, образувано от това, което е останало след всички азбучни знаци са премахнати:

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. Substr или LIKE по-бърз ли е в Oracle?

  2. Настройка на Oracle за потребителска схема по подразбиране (без промяна на сесия)

  3. Идентификаторът на Fluent Nhibernate Oracle е твърде дълъг - проблем с името на псевдонима

  4. Как да извършите отделна транзакция в Oracle PLSQL

  5. Как да конвертирате данни от един ред в една колона в Oracle