根据某些条件更改where子句标准

时间:2014-04-02 18:21:22

标签: java sql oracle jdbc

我正在努力实现的任务: 我有一个查询,其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查询,如果可能,请提供示例或语法如何实现此目的。

感谢。

1 个答案:

答案 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>