我有一个Java布尔参数,该参数应该告诉我是否检查值IN(x,y,z)或NOT IN(x,y,z)(基于true / false)。如何将“ NOT”插入SQL查询?我应该使用简单的String.replaceAll()还是编写其他查询?哪个是最佳?
答案 0 :(得分:6)
一个选项是编写一个带参数的查询。您可以将条件表示为:
select t.*
from t
where (@flag = 1 and x in (1, 2, 3)) or
(@flag = 0 and x not in (1, 2, 3));
对于性能,我认为union all
更好:
select t.*
from t
where @flag = 1 and x in (1, 2, 3)
union all
select t.*
from t
where @flag = 0 and x not in (1, 2, 3);
当然,在Java中,您可以只使用两个查询:
if flag then sql = . . .
else sql = . . . ;
然后一步执行sql。