在 where 子句中使用多个条件时出现关系运算符错误
Posted
技术标签:
【中文标题】在 where 子句中使用多个条件时出现关系运算符错误【英文标题】:relational operator error while using multiple condition in where clause 【发布时间】:2020-05-01 13:33:56 【问题描述】:我有一个日期列,需要检查以下场景的几个条件.. 但看起来我做错了什么并因此出错
scenario:
If EmpBonusDate column is null or
if (sysdate-EmpBonusDate >= some constant number) then return 1 else 0
-- 我将 (sysdate-EmpBonusDate) 的输出乘以 24,所以我可以得到一个可以比较的数字以检查 >= 条件为常数。
这就是我的 sql 的样子
Select count(1) from employee emp where
Emp.IsActive = '1'
and (sysdate - emp.EmpBonusDate) * 24 >= 30 -- this works
-- or nvl(emp.EmpBonusDate,1) -- if I add or clause, I get [ORA-00920] invalid relational operator error....
任何线索我做错了什么以及如何获得上述场景的 1 或 0
【问题讨论】:
你能和Emp.IsActive = '1' and ((sysdate - emp.EmpBonusDate) * 24 >= 30 or emp.EmpBonusDate is null)
一起试试吗?
出现错误或不提取行?
@WoAiNii - 您可以将此作为答案发布.. 我会接受它.. 按预期工作..
【参考方案1】:
使用or nvl(emp.EmpBonusDate,1)
语法,您缺少关系,因为您没有将该值与某物进行比较。
你可以用这个替换你的where
子句
Emp.IsActive = '1' and ((sysdate - emp.EmpBonusDate) * 24 >= 30 or emp.EmpBonusDate is null)
这相当于你的 if 子句。
【讨论】:
以上是关于在 where 子句中使用多个条件时出现关系运算符错误的主要内容,如果未能解决你的问题,请参考以下文章
在 PL/SQL 存储过程中将多个变量传递给 WHERE 条件
Laravel 6:如何将多个 where 子句添加到关系中
使用必要的 WHERE 子句时出现“在 bool 上调用成员函数 bind_param()”错误 [重复]