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

SQL Dynamic ASC og DESC

Du kan lave løsninger som @TonyAndrews ved at manipulere numeriske værdier eller dataværdier. For VARCHAR2 et alternativ til dynamisk SQL kunne være at have to udtryk:

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

Når :sorting har værdien 'ASC' resultatet af den ORDER BY bliver som hvis det havde været:

order by
   col1 ASC,
   NULL DESC

Når :sorting har værdien 'DESC' resultatet af den ORDER BY bliver som hvis det havde været:

order by
   NULL ASC,
   col1 DESC

En ulempe ved denne metode er, at de tilfælde, hvor optimizeren kan springe en SORT-operation over, fordi der er et indeks involveret, der gør, at dataene allerede er sorteret som ønsket, vil det ikke ske, når man bruger CASE-metoden som denne. Dette vil beordre en sorteringsoperation uanset hvad.



  1. Problemer med oprettelse af PostgreSQL Trigger

  2. Indstilling af forbindelsePool crasher Slick 3.0

  3. Postgres 9.1 vs Mysql 5.6 InnoDB?

  4. Sådan kopieres tabel fra en tabel på ekstern server til tabel på en anden ekstern db mysql5.6 med PDO