您的位置:首页 > 运维架构

ORA-01797: this operator must be followed by ANY or ALL

2013-12-20 21:26 1576 查看
今天写sql时报了一个ORA-01797: this operator must be followed by ANY or ALL的错

中文的意思是 : 这个操作符必须遵循的任何或所有

说明我sql拼错了,是两个日期之间的界限问题,开始日期与结束日期之间:



报错之前的代码是这样

SELECT * FROM AMS_SALE_PRICE WHERE

((START_DATE>= TO_DATE('2014-1-1','yyyy-MM-dd') AND START_DATE <=('2014-1-31','yyyy-MM-dd')OR

(END_DATE >= TO_DATE('2014-1-1','yyyy-MM-dd') AND END_DATE <=('2014-1-31','yyyy-MM-dd') OR

(TO_DATE('2014-1-1','yyyy-MM-dd') >= START_DATE AND ('2014-1-31','yyyy-MM-dd')<= END_DATE) OR

( TO_DATE('2014-1-31','yyyy-MM-dd') >= START_DATE AND ('2014-1-31','yyyy-MM-dd') <= END_DATE))

低级错误啊!!!!

改正以后是:

SELECT * FROM AMS_SALE_PRICE WHERE

((START_DATE >= TO_DATE('2014-1-1','yyyy-MM-dd') AND START_DATE <= TO_DATE('2014-1-31','yyyy-MM-dd')) OR

(END_DATE >= TO_DATE('2014-1-1','yyyy-MM-dd') AND END_DATE <= TO_DATE('2014-1-31','yyyy-MM-dd')) OR

(TO_DATE('2014-1-1','yyyy-MM-dd')>= START_DATE AND TO_DATE('2014-1-31','yyyy-MM-dd') <=TO_DATE('2014-1-31','yyyy-MM-dd')) OR

(TO_DATE('2014-1-31','yyyy-MM-dd')>= START_DATE AND TO_DATE('2014-1-31','yyyy-MM-dd') <= END_DATE))

给大家提供一个有用的sql,这条sql还可以优化下,求各位大神指点!

SELECT * FROM AMS_SALE_PRICE

WHERE ((START_DATE >= #beginDate# AND START_DATE <= #endDate#) OR

(END_DATE >= #beginDate# AND END_DATE <= #endDate#) OR

(#beginDate# >= START_DATE AND #endDate# <= END_DATE) OR

(#endDate# >= START_DATE AND #endDate# <= END_DATE))

AND SALE_ID = #saleId#

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐