sql >> Databasteknik >  >> RDS >> Oracle

SQL Dynamic ASC och DESC

Du kan göra lösningar som @TonyAndrews genom att manipulera numeriska eller datavärden. För VARCHAR2 ett alternativ till dynamisk SQL kan vara att ha två uttryck:

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

När :sorting har värdet 'ASC' resultatet av den ORDER BY blir som om det hade varit:

order by
   col1 ASC,
   NULL DESC

När :sorting har värdet 'DESC' resultatet av den ORDER BY blir som om det hade varit:

order by
   NULL ASC,
   col1 DESC

En nackdel med den här metoden är att de fall där optimeraren kan hoppa över en SORT-operation eftersom det finns ett index inblandat som gör att data redan sorteras som önskat, det kommer inte att hända när man använder CASE-metoden som denna. Detta kommer att kräva en sorteringsoperation oavsett vad.



  1. Är det bättre att VÄLJA innan du GÅR MED?

  2. Hur kan jag massuppdatera poster med sequelize.js och ignorera vissa kolumner

  3. Försöker undvika en cirkulär referens

  4. VB.NET MySQL-anslutning