猿问

如何在 SQL 中使用可选的 WHERE 子句?

我正在尝试在单个 sql 中获取记录。我想使用可选的 WHERE 子句来做到这一点。这是我试过的

    @Query(value = "select * from Products p where type = 'L' and active = 
1 and ?1 is null or p.pNum =?1", nativeQuery = true)
    public List<Products> findAllParties(String productNumber);

这没有用。

当参数为空时,我想带上所有记录,否则我想只带指定的产品。

我怎么做?提前致谢。


慕桂英4014372
浏览 111回答 3
3回答

翻翻过去那场雪

制作2个单独的方法&nbsp; &nbsp; @Query(value = "select * from Products p where type = 'L' and active =&nbsp;1 and ?1 is null or p.pNum =?1", nativeQuery = true)&nbsp; &nbsp; public List<Products> findAllParties(String productNumber);&nbsp; &nbsp; @Query(value = "select * from Products p ", nativeQuery = true)&nbsp; &nbsp; public List<Products> findAllParties();

潇潇雨雨

如果您想要有条件地构建查询,请使用 JPACriteria API或 Spring 的Specifications API.

30秒到达战场

select&nbsp;*&nbsp;from&nbsp;Products&nbsp;p&nbsp;where&nbsp;req_param&nbsp;is&nbsp;null&nbsp;or&nbsp;(&nbsp;type='L'&nbsp;and&nbsp;active=1)因为如果 req_param 为 null 它将对所有行都为真,因此将带来所有记录。如果 req_param 不为空/空条件“req_param is null”将为 false,并且仅基于“(type='L' and active=1)”返回行
随时随地看视频慕课网APP

相关分类

Java
我要回答