使用where子句选择查询,其中选择基于参数值

时间:2014-07-28 09:39:28

标签: java mysql database hibernate

我需要编写一个查询,我将从表中获取一些细节,但问题是参数值可以为null只有1个参数值不会为空。

我尝试了以下查询。我总是得到一个零取的结果。

P.S我正在使用休眠,从那里我在设置参数后触发了这个查询。

SELECT count(*)
            FROM audit_details iad
            WHERE
              iad.in_name IN (:inSelected)

             OR

            CASE :callerRef
                  WHEN :callerRef IS NOT NULL
                    THEN
                      iad.call_id=:callerRef AND
                  END


            CASE :incReference
                  WHEN :incReference IS NOT NULL
                        THEN
                         iad.abc_id=:incReference
                END 


            CASE :from_date
                WHEN :from_date IS NOT NULL
                    THEN
                    Date(iad.abc_update_time)>=Date(:from_date) 
                END


            CASE :to_date
              WHEN :to_date IS NOT NULL
                THEN 
                      Date(iad.abc_update_time)<=Date(:to_date)
               END

纠正我在哪里以及我做错了什么。

1 个答案:

答案 0 :(得分:0)

您可以使用简单的布尔表达式执行此操作:

SELECT count(*)
FROM audit_details iad
WHERE
    iad.in_name IN (:inSelected)
OR (:callerRef IS NOT NULL AND iad.call_id=:callerRef)
OR (:incReference IS NOT NULL AND iad.abc_id=:incReference)
OR (:from_date IS NOT NULL AND Date(iad.abc_update_time)>=Date(:from_date))
OR (:to_date IS NOT NULL AND Date(iad.abc_update_time)<=Date(:to_date))
  

我做错了什么?

您正在使用不存在的SQL语法。