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

SQL Dynamic ASC и DESC

Можете да правите решения като @TonyAndrews чрез манипулиране на числови стойности или стойности на данни. За VARCHAR2 алтернатива на динамичния SQL може да бъде да има два израза:

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

Когато :sorting има стойност 'ASC' резултатът от този ORDER BY става като ако беше:

order by
   col1 ASC,
   NULL DESC

Когато :sorting има стойност 'DESC' резултатът от този ORDER BY става като ако беше:

order by
   NULL ASC,
   col1 DESC

Един недостатък на този метод е, че онези случаи, в които оптимизаторът може да пропусне операция SORT, тъй като има включен индекс, който прави данните вече сортирани по желание, това няма да се случи при използване на метода CASE като този. Това ще изисква операция за сортиране независимо от всичко.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Изрязване на белите интервали (нов ред и пространство на раздела) в низ в Oracle

  2. Проблем при сравняване на резултат от to_char(myDate, 'DAY') с низ

  3. Инструмент за разработчици на Oracle SQL:Изтегляне и инсталиране

  4. дефинирана от потребителя персонализирана агрегатна функция с помощта на plsql

  5. Търсене в поле varchar за числови стойности от определен диапазон