sql >> Databáze >  >> RDS >> Oracle

řazení alpanumerických řetězců v Oracle 11g

To, co jste uvedli v otázkách, se řadí pouze podle číselné části hodnoty, takže uvidíte něco jako:

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 

Pokud chcete seřadit podle abecedních znaků a poté podle čísel v nich, můžete použít dva výrazy v pořadí podle klauzule - takže seřadíte podle první abecední sekce a poté podle čísla vytvořeného z toho, co zbylo po všech abecedních znacích. jsou odstraněny:

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. Nejlepší způsob, jak se naučit uložené procedury PostgreSQL?

  2. jak vzít data ze souboru csv a uložit do grálů pomocí mysql?

  3. Obrázek formátu data Oracle končí před převodem celého vstupního řetězce

  4. Přidání cizího klíče do existující tabulky