数値またはデータ値を操作することにより、@TonyAndrewsのようなソリューションを実行できます。 VARCHAR2
の場合 動的SQLの代わりに、次の2つの式を使用することもできます。
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
この方法の欠点の1つは、データを希望どおりに並べ替えるインデックスが含まれているためにオプティマイザーがSORT操作をスキップできる場合です。これは、このようなCASE方法を使用した場合には発生しません。これにより、何があっても並べ替え操作が必要になります。