在 Oracle Sql 中按顺序绑定变量
Bind Variables in order by in OracleSql
我需要根据 UI 中的用户设置的标准进行不同的排序。例如可以是
order by a asc, b desc, c asc , d asc
或
order by b asc, a desc, c desc , d desc
它可以是我从 UI 中做出的任何组合。如何在 OracleSql 中使用 Bind Variables 在 mulesoft 3.9[=12= 中将其传递给 order by ]
您不能使用绑定变量来指定列名。绑定变量只传递值。
假设列数据类型兼容,你可以做这样的事情,并根据需要重复尽可能多的排序选项,如果数据类型不兼容,将 case 语句拆分为一对(asc,desc ) 对于每组兼容的数据类型:
select * from your_table
order by case case :col_1_dir when 'desc' then null else :col_1 end
when 'a' then a
when 'b' then b
when 'c' then c
when 'd' then d
else null
end
, case case :col_1_dir when 'asc' then null else :col_1 end
when 'a' then a
when 'b' then b
when 'c' then c
when 'd' then d
else null
end desc
, case case :col_2_dir when 'desc' then null else :col_2 end
when 'a' then a
when 'b' then b
when 'c' then c
when 'd' then d
else null
end
, case case :col_2_dir when 'asc' then null else :col_2 end
when 'a' then a
when 'b' then b
when 'c' then c
when 'd' then d
else null
end desc
我需要根据 UI 中的用户设置的标准进行不同的排序。例如可以是
order by a asc, b desc, c asc , d asc
或
order by b asc, a desc, c desc , d desc
它可以是我从 UI 中做出的任何组合。如何在 OracleSql 中使用 Bind Variables 在 mulesoft 3.9[=12= 中将其传递给 order by ]
您不能使用绑定变量来指定列名。绑定变量只传递值。
假设列数据类型兼容,你可以做这样的事情,并根据需要重复尽可能多的排序选项,如果数据类型不兼容,将 case 语句拆分为一对(asc,desc ) 对于每组兼容的数据类型:
select * from your_table
order by case case :col_1_dir when 'desc' then null else :col_1 end
when 'a' then a
when 'b' then b
when 'c' then c
when 'd' then d
else null
end
, case case :col_1_dir when 'asc' then null else :col_1 end
when 'a' then a
when 'b' then b
when 'c' then c
when 'd' then d
else null
end desc
, case case :col_2_dir when 'desc' then null else :col_2 end
when 'a' then a
when 'b' then b
when 'c' then c
when 'd' then d
else null
end
, case case :col_2_dir when 'asc' then null else :col_2 end
when 'a' then a
when 'b' then b
when 'c' then c
when 'd' then d
else null
end desc