【发布时间】:2012-06-06 17:47:47
【问题描述】:
我有这个在 Java 中运行的查询。
select book from com where genre=?;
我动态设置了genre 的参数。有没有办法有时设置参数以便选择所有数据?
【问题讨论】:
-
is that possible?当然可以,但您必须让我们知道您使用的是哪个数据库。
我有这个在 Java 中运行的查询。
select book from com where genre=?;
我动态设置了genre 的参数。有没有办法有时设置参数以便选择所有数据?
【问题讨论】:
is that possible? 当然可以,但您必须让我们知道您使用的是哪个数据库。
通常的技巧是设置一个单独的参数来选择所有内容:
SELECT book FROM com WHERE genre=? OR 1=?
第二个参数设置为0时,使用流派过滤,设置为1时,全部返回。
如果你愿意改用named JDBC parameters,你可以用一个参数重写,用null表示“全选”:
SELECT book FROM com WHERE genre=:genre_param OR :genre_param is null
【讨论】:
您的意思是您希望能够使用相同的脚本并传入一个忽略您的“Where”的参数?使用它并将字符串“AllData”传递给第二个参数以包含所有结果并忽略您的第一个参数:
select book from com where (genre=? OR "AllData"=?);
【讨论】:
创建一个不同的查询:
select book from com;
这将从“com”中的所有行中获取“book”列。
【讨论】:
只需使用通配符。
前任。 SELECT book FROM com WHERE genre LIKE "%"+seachString+"%";
【讨论】:
genre='art' 真的应该返回genre='fartbubbles' 所在的行吗?此查询将执行此操作。
您可以使用 CASE 表达式(SQL SQERVER):
select book from com where genre=CASE
WHEN ? IS NOT NULL THEN ?
ELSE genre
END
【讨论】: