【问题标题】:Select all data in sql with where condition?以where条件选择sql中的所有数据?
【发布时间】:2012-06-06 17:47:47
【问题描述】:

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

select book from com where genre=?;

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

【问题讨论】:

  • is that possible? 当然可以,但您必须让我们知道您使用的是哪个数据库。

标签: java sql


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    select book from com where (genre=? OR "AllData"=?);
    

    【讨论】:

      【解决方案3】:

      创建一个不同的查询:

      select book from com;
      

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

        • 除非在 java 实现中不允许这样做。如果允许,没有人提到它,这让我感到惊讶。
        • 这当然是允许的,但这是Bobby Tables的秘诀。
        • 此外,问题中没有迹象表明预期的是通配符搜索。如果genre='art' 真的应该返回genre='fartbubbles' 所在的行吗?此查询将执行此操作。
        【解决方案5】:

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

        select book from com where genre=CASE
                  WHEN ? IS NOT NULL THEN ?
                  ELSE genre
                  END
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2020-01-16
          • 1970-01-01
          • 2018-06-06
          • 2013-09-15
          • 2016-02-03
          • 2021-05-27
          • 2018-04-30
          相关资源
          最近更新 更多