我正在努力实现的任务: 我有一个查询,其where子句条件将根据一个条件动态更新,保持它在下面的正常编程语言是我想要实现的
考虑“名称”是我正在检查条件的列
If(name==""){
select * from infodata where col1='somevalue' and col2='somevalue'
} else if(name=="2"){
select * from infodata where col3='somevalue' or col4='somevalue'
} else {
select * from infodata where col2='somevalue' and col5='somevalue'
}
基于该值我需要指定不同的where条件。 (我使用Oracle作为数据库)
目前我实现这一点是通过在Java代码中编写条件来为查询分配相应的where条件
我正在寻找的是一种在sql查询中执行此操作的方法,以便我可以在预准备语句中传递所需的数据。只是想知道是否可以使用单个SQL查询,如果可能,请提供示例或语法如何实现此目的。
感谢。
答案 0 :(得分:1)
听起来你可以简单地结合条件
select *
from infodata
where (name is null and col1 = 'somevalue' and col2 = 'somevalue')
or (name = '2' and (col3 = 'somevalue' or col4 = 'somevalue'))
or (name != '2' and col2 = 'somevalue' and col5 = 'somevalue)
请记住,Oracle没有与NULL
分开的空字符串的概念,因此我假设您要检查第一个条件中是否name IS NULL
。< / p>