我有一个 java boolean 参数,它应该告诉我是否检查 IN (x,y,z) 中的值或 NOT IN (x,y,z) 中的值(基于 true/false)。我如何将“NOT”插入到 SQL 查询中?我应该使用简单的 String.replaceAll() 还是编写不同的查询?哪个是最佳的?
最佳答案
一种选择是编写带有参数的单个查询。您可以将条件表示为:
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。
关于java - SQL IN 或 NOT IN 取决于 boolean 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52368153/