我需要编写一个查询,我将从表中获取一些细节,但问题是参数值可以为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
纠正我在哪里以及我做错了什么。
答案 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语法。