java - SQL IN 或 NOT IN 取决于 boolean 参数

标签 java sql sql-server

我有一个 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/

相关文章:

java - String.format 向长/字符串添加点

sql-server - SQL 中的日期范围交集拆分

java - 注解Spring @Controller也作为Bean?

java - 如何更新数据集中的现有记录

sql - 如何获取最近完整的 13 周的记录?

sql - 如何让我的 SQL Server Management Studio 接受 .sql 文件

mysql - 'on clause' 中使用实际值过滤器的未知列

mysql - SQL删除重复记录

mysql - 与 SQL Source Control、SQL Automation Pack 和 Jenkins 的持续集成

java - 为什么这个基本的客户端-服务器程序不传递数据?