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

SQL Dynamic ASC i DESC

Możesz robić rozwiązania takie jak @TonyAndrews, manipulując wartościami liczbowymi lub danymi. Dla VARCHAR2 alternatywą dla dynamicznego SQL może być posiadanie dwóch wyrażeń:

order by
   case when :sorting='ASC' then col1 end ASC,
   case when :sorting='DESC' then col1 end DESC

Kiedy :sorting ma wartość 'ASC' wynik tego ORDER BY staje się tak, jakby to było:

order by
   col1 ASC,
   NULL DESC

Kiedy :sorting ma wartość 'DESC' wynik tego ORDER BY staje się tak, jakby to było:

order by
   NULL ASC,
   col1 DESC

Jedną z wad tej metody jest to, że przypadki, w których optymalizator może pominąć operację SORT, ponieważ jest zaangażowany indeks, który powoduje, że dane są już posortowane w pożądany sposób, nie wystąpią przy użyciu metody CASE w ten sposób. Będzie to wymagać operacji sortowania bez względu na wszystko.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sprawdź format DATE w Oracle

  2. ORA-65139:Niezgodność między plikiem metadanych XML a plikiem danych

  3. Wynik formatu odejmowania czasu

  4. Jak powtórzyć zapytanie w Oracle

  5. Jak mogę uzyskać wszystkie informacje o tabeli w Oracle?