使用JPA在Sql中具有不同值的多条语句where子句

伊塔洛·杜阿尔特

大家好,我正在使用 JPA 对我的项目进行本机查询,但我不知道如何在 where 子句中执行 if 和 else 类型,我的 ?0 可以是 4 个值:10,20,30 和40,当 ?0 是 10, 20, 30 我应该使用 CI.QTD <= 并且当 ?0 是 40 时,条件应该是 >= 。我怎样才能做到这一点?

在一个条件下遵循我的代码:

SELECT rownum AS id, 
       x.* 
FROM   ( 
                SELECT   ci.text, 
                         ci.lenght 
                FROM     ci_table CI

                WHERE    (?0 IS NULL OR ci.qtd <= ?0) 

                GROUP BY ci.text, 
                         ci.lenght 
                ORDER BY ci.text) x , 
       nativequery = true);

调整后添加查询:

@Query(value =
            "SELECT rownum as ID, X.* FROM (SELECT " +
                    " CI.PARAM1  " +
                    " CI.PARAM2,  " +
                    " CI.PARAM3,         " +
                    " CI.PARAM4, " +
                    " CI.PARAM5" +
                    " FROM    " +
                    " CM_PARAMS CI " +
                    " WHERE  " +
                    " (?1 is null or CI.PARAM6 = ?1) " +
                    " AND (?2 is null or CI.PARAM7 = ?2) " +
                    " AND (?3 is null or CI.PARAM8 = ?3) " +
                    " AND (?4 is null or CI.PARAM9 = ?4) " +
                    " AND (?5 is null or CI.PARAM10 = ?5) " +
                    " AND (?6 is null or CI.PARAM11 = ?6) " +
                    " AND (?7 is null or CI.PARAM12 = ?7) " +
                    " AND (?8 is null or CI.PARAM13 = ?8) " +
                    " AND (CASE WHEN ?9 >30 THEN CI.PARAM14 > 30  " +
                    "  CASE WHEN ?9 <31 THEN CI.PARAM15 <= ?9 END) = 1 " +
                    " GROUP BY " +
                    " CI.PARAM1,  " +
                    " CI.PARAM2,  " +
                    " CI.PARAM3,         " +
                    " CI.PARAM4, " +
                    " CI.PARAM5" +
                    " ORDER BY  " +
                    " CI.PARAM1 ASC) X " , nativeQuery = true)
玛雅克·波瓦尔

尝试:

SELECT rownum AS id, 
       x.* 
FROM   ( 
                SELECT   ci.text, 
                         ci.lenght
                FROM     ci_table CI

                WHERE (CASE WHEN ?0 IN (10,20,30) THEN CI.QTD <= ?0
                      WHEN ?0 = 40 THEN CI.QTD > ?0 END) = 1

                GROUP BY ci.text, 
                         ci.lenght 
                ORDER BY ci.text) x , 
       nativequery = true);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用WHERE子句更新语句,该子句包含具有空值的列

来自分类Dev

使用WHERE子句更新语句,该子句包含具有空值的列

来自分类Dev

SQL Where子句具有多个值

来自分类Dev

WHERE子句中具有多个条件的SQL语句的语法

来自分类Dev

具有2个条件的SQL语句中的WHERE子句

来自分类Dev

WHERE子句中具有多个条件的SQL语句的语法

来自分类Dev

SQL Server:WHERE子句中具有IN条件的CASE语句

来自分类Dev

具有不同where子句的多个sql查询

来自分类Dev

具有动态WHERE子句的预备语句

来自分类Dev

具有 NULL 值的 where 子句中的 SQL Switch/Case

来自分类Dev

功能中带有where子句的sql语句

来自分类Dev

带有IN语句的SQL中的动态Where子句

来自分类Dev

是否可以在 WHERE 子句中使用 IF 语句并根据不同的 IF 值使用 INTO 语句?

来自分类Dev

在WHERE子句SQL查询中的CASE语句之间使用AND

来自分类Dev

JPA 与“where”子句不同

来自分类Dev

从SQL返回表的所有值,并在下拉列表中作为前端,并在后端使用where子句和Prepared语句

来自分类Dev

SQL中具有多个联接的复杂where子句

来自分类Dev

有没有一种方法可以在sql中的where子句中使用case语句使用or或=?

来自分类Dev

具有多条件语法的SQL Server CASE语句

来自分类Dev

具有多条件语法的SQL Server CASE语句

来自分类Dev

在SQL中根据CASE结果使用不同的WHERE子句

来自分类Dev

使用 for 循环绘制具有不同最大 X 值的多条轨迹线

来自分类Dev

如何检查组中具有不同值的语句?

来自分类Dev

在WHERE子句中具有复杂CASE的T SQL SELECT语句

来自分类Dev

在具有不同数据类型的ORDER BY子句中使用CASE语句

来自分类Dev

当where子句中使用的索引列具有特定值时,Azure sql查询速度很慢

来自分类Dev

当where子句中使用的索引列具有特定值时,Azure sql查询速度很慢

来自分类Dev

具有多个WHERE子句的SQL RANK

来自分类Dev

SQL中具有不同语句计数的存储过程

Related 相关文章

  1. 1

    使用WHERE子句更新语句,该子句包含具有空值的列

  2. 2

    使用WHERE子句更新语句,该子句包含具有空值的列

  3. 3

    SQL Where子句具有多个值

  4. 4

    WHERE子句中具有多个条件的SQL语句的语法

  5. 5

    具有2个条件的SQL语句中的WHERE子句

  6. 6

    WHERE子句中具有多个条件的SQL语句的语法

  7. 7

    SQL Server:WHERE子句中具有IN条件的CASE语句

  8. 8

    具有不同where子句的多个sql查询

  9. 9

    具有动态WHERE子句的预备语句

  10. 10

    具有 NULL 值的 where 子句中的 SQL Switch/Case

  11. 11

    功能中带有where子句的sql语句

  12. 12

    带有IN语句的SQL中的动态Where子句

  13. 13

    是否可以在 WHERE 子句中使用 IF 语句并根据不同的 IF 值使用 INTO 语句?

  14. 14

    在WHERE子句SQL查询中的CASE语句之间使用AND

  15. 15

    JPA 与“where”子句不同

  16. 16

    从SQL返回表的所有值,并在下拉列表中作为前端,并在后端使用where子句和Prepared语句

  17. 17

    SQL中具有多个联接的复杂where子句

  18. 18

    有没有一种方法可以在sql中的where子句中使用case语句使用or或=?

  19. 19

    具有多条件语法的SQL Server CASE语句

  20. 20

    具有多条件语法的SQL Server CASE语句

  21. 21

    在SQL中根据CASE结果使用不同的WHERE子句

  22. 22

    使用 for 循环绘制具有不同最大 X 值的多条轨迹线

  23. 23

    如何检查组中具有不同值的语句?

  24. 24

    在WHERE子句中具有复杂CASE的T SQL SELECT语句

  25. 25

    在具有不同数据类型的ORDER BY子句中使用CASE语句

  26. 26

    当where子句中使用的索引列具有特定值时,Azure sql查询速度很慢

  27. 27

    当where子句中使用的索引列具有特定值时,Azure sql查询速度很慢

  28. 28

    具有多个WHERE子句的SQL RANK

  29. 29

    SQL中具有不同语句计数的存储过程

热门标签

归档