Bạn có thể thực hiện các giải pháp như @TonyAndrews bằng cách thao tác với các giá trị số hoặc dữ liệu. Đối với VARCHAR2
một thay thế cho SQL động có thể có hai biểu thức:
order by
case when :sorting='ASC' then col1 end ASC,
case when :sorting='DESC' then col1 end DESC
Khi :sorting
có giá trị 'ASC'
kết quả của ORDER BY
đó trở nên giống như nếu nó đã từng là:
order by
col1 ASC,
NULL DESC
Khi :sorting
có giá trị 'DESC'
kết quả của ORDER BY
đó trở nên giống như nếu nó đã từng là:
order by
NULL ASC,
col1 DESC
Một nhược điểm của phương pháp này là những trường hợp mà trình tối ưu hóa có thể bỏ qua thao tác SORT vì có một chỉ mục liên quan làm cho dữ liệu đã được sắp xếp như mong muốn, điều đó sẽ không xảy ra khi sử dụng phương pháp CASE như thế này. Điều này sẽ yêu cầu hoạt động sắp xếp bất kể điều gì.