繁体   English   中英

SQL IN或NOT IN取决于布尔参数

[英]SQL IN or NOT IN depending on boolean parameter

我有一个Java布尔参数,该参数应该告诉我是否检查值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。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM