我是否可以在oracle中使用OR claue和下面的代码片段(?是一个输入参数):
Select t1.name, t1.value from table t1 where t1.name ='abc' and (t1.col OR
t1.value =? );发布于 2017-09-18 16:57:31
为此,您可以使用IN子句:
Select t1.name, t1.value
from table t1
where t1.name = 'abc'
and ? in (t1.col, t1.value);发布于 2017-09-18 16:57:53
有几种方法可以做到这一点:
使用IN子句:
SELECT name, value
FROM table
WHERE name ='abc'
AND ? IN ( col, value );或者,使用子查询:
SELECT name, value
FROM table t
INNER JOIN
( SELECT ? AS input_var FROM DUAL ) v
ON ( t.col = v.input_var OR t.value = v.input_var )
WHERE name ='abc';发布于 2017-09-18 16:38:52
如果希望重用来自Java代码的查询中的值,可以考虑使用预准备语句:
String sql = "select t1.name, t1.value from table t1 where t1.name =? and (t1.col = ? or t1.value = ?)";
int someVal = 10;
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString("abc");
ps.setInt(2, someVal);
ps.setInt(3, someVal);
ResultSet rs = ps.executeQuery();
while (rs.next()) {
String name = rs.getString("name");
String value = rs.getString("value");
}如果直接从Oracle尝试类似的操作,您可以使用会话变量:
declare
some_val number := 10;
begin
select t1.name, t1.value
from table t1
where t1.name ='abc' and (t1.col = some_val or t1.value = some_val);
end;
/https://stackoverflow.com/questions/46274877
复制相似问题