ORA-00920无效逻辑运算符错误:SQL语句修正请求
修正Oracle连接查询的运算符错误
错误原因
- Oracle不支持SAS风格的连续比较语法(
A <= B <= C),必须拆分为两个独立条件并用AND连接。 - SAS的日期格式
"&start."d是本地语法,提交到Oracle执行时会被识别为无效表达式,需要转换为Oracle兼容的日期处理方式。
修正后的代码
将连续比较拆分,同时把SAS宏变量转换为Oracle可识别的日期格式:
Proc sql; connect to oracle(path="xxx" connection =shared); create table sample as select * from connection to oracle (select * from ori.auto as a where datepart(a.date) >= TO_DATE("&start.", 'YYYY-MM-DD') AND datepart(a.date) <= TO_DATE("&end.", 'YYYY-MM-DD')); quit;
补充说明
- 确保
&start.和&end.宏变量是YYYY-MM-DD格式的字符串,如果你的宏变量是其他日期格式(比如MM/DD/YYYY),需要修改TO_DATE函数里的格式匹配符。 - 如果
a.date本身就是Oracle的DATE类型,不需要用datepart()函数,直接比较即可:
Proc sql; connect to oracle(path="xxx" connection =shared); create table sample as select * from connection to oracle (select * from ori.auto as a where a.date >= TO_DATE("&start.", 'YYYY-MM-DD') AND a.date <= TO_DATE("&end.", 'YYYY-MM-DD')); quit;
内容的提问来源于stack exchange,提问作者suresh
相关产品推荐
相关产品推荐

