sql >> Database teknologi >  >> RDS >> Oracle

Oracle:Hvordan kan jeg implementere en naturlig rækkefølge i en SQL-forespørgsel?

Du kan bruge funktioner i din ordre-ved klausul. I dette tilfælde kan du opdele de ikke-numeriske og numeriske dele af feltet og bruge dem som to af rækkefølgekriterierne.

select * from t
 order by to_number(regexp_substr(a,'^[0-9]+')),
          to_number(regexp_substr(a,'[0-9]+$')),
          a;

Du kan også oprette et funktionsbaseret indeks for at understøtte dette:

create index t_ix1
    on t (to_number(regexp_substr(a, '^[0-9]+')),
          to_number(regexp_substr(a, '[0-9]+$')), 
          a);


  1. MySQL - Fjern standardværdien for Datetime-feltet

  2. Fremskynder GROUP BY-, SUM- og AVG-forespørgsler

  3. Vælg information fra sidste vare og tilmeld dig det samlede beløb

  4. CodeIgniter-konfigurationstegnsæt og UTF-8-understøttelse