查询:
select * from v_fi_trans_logs
where case_num like '105'
AND TRANS_DT=CAST('09-JUL-2014' AS DATE);
不会给我任何记录。
但如果我选择
select TRANS_DT,CAST('09-JUL-2014' AS DATE) from v_fi_trans_logs where case_num like '105'
它返回我相等的值。
TRANS_DT CAST('09-JUL-2014' AS DATE)
----------------------------------------------
09-JUL-14 09-JUL-14
09-JUL-14 09-JUL-14
09-JUL-14 09-JUL-14
09-JUL-14 09-JUL-14
09-JUL-14 09-JUL-14
09-JUL-14 09-JUL-14
09-JUL-14 09-JUL-14
任何人都可以帮我解决这个问题。
任何输入都会有很大的帮助。
答案 0 :(得分:0)
我通过HIT和TRAIL方法找到了解决方案:
它适用于:
select * from v_fi_trans_logs
where case_num like '105'
AND TRANS_DT LIKE CAST('09-JUL-2014' AS DATE);
即将“=”替换为“LIKE”解决问题。
答案 1 :(得分:0)
我认为问题在于您正在使用:
like '105' AND TRANS_DT=CAST('09-JUL-2014' AS DATE);
你可以使用like作为数字和字符串的比较......只有一次。
但是如果你想在逻辑上比较'105'和TRANS_DT = CAST('09 -JUL-2014'AS DATE)。你做不了。例如,翻译将是(7& true)。
查看此解决方案的错误非常相似。 How can I use "OR" condition in MySQL CASE expression?
答案 2 :(得分:0)
您确定TRANS_DT被截断了吗? 如果它有一个时间组件,那么与日期相比它将无法工作。
尝试以下方法:
select *
from v_fi_trans_logs
where case_num like '105'
and trunc(trans_dt) = date '2014-07-09';
或者如果您要使用trans_dt的索引:
where case_num like '105'
and trans_dt >= date '2014-07-09'
and trans_dt < date '2014-07-10'