0

我有这个在 Java 中运行的查询。

select book from com where genre=?;

genre动态设置参数。有没有办法有时设置参数以便选择所有数据?

4

5 回答 5

7

通常的技巧是设置一个单独的参数来选择所有内容:

SELECT book FROM com WHERE genre=? OR 1=?

当您将第二个参数设置为0时,将使用流派过滤,但当您将其设置为 时1,将返回所有内容。

如果您愿意切换到使用命名的 JDBC 参数,您可以用一个参数重写,并使用null来表示“选择所有内容”:

SELECT book FROM com WHERE genre=:genre_param OR :genre_param is null
于 2012-06-06T17:50:12.140 回答
1

您的意思是您希望能够使用相同的脚本并传入一个忽略您的“Where”的参数?使用它并将字符串“AllData”传递给第二个参数以包含所有结果并忽略您的第一个参数:

select book from com where (genre=? OR "AllData"=?);
于 2012-06-06T17:55:09.193 回答
0

创建一个不同的查询:

select book from com;

这将从“com”中的所有行中获取“book”列。

于 2012-06-06T17:50:07.137 回答
0

只需使用通配符。前任。SELECT book FROM com WHERE genre LIKE "%"+seachString+"%";

于 2012-06-06T17:50:47.247 回答
0

您可以使用 CASE 表达式 (SQL SQERVER):

select book from com where genre=CASE
          WHEN ? IS NOT NULL THEN ?
          ELSE genre
          END
于 2012-06-06T17:55:09.693 回答