更改Oracle包含情况的自定义列的名称



我无法更改Oracle中的自定义列的名称。

SELECT case when sysdate between START_DATE and END_DATE then 'Y' else 'N' end case  as Flag
FROM  EXP_ECO_RATES;

它给了我错误

ORA-00923:从关键字中找不到预期

START_DATEEND_DATE是具有日期数据类型的列。

end case处删除case关键字。Oracle期望FROM之后的CC_5,因为这是CASE表达式的正确语法,但是它找到了case关键字,因此您获得了错误-ORA-00923: FROM keyword not found where expected.

将其更改为:

SELECT case when sysdate between START_DATE and END_DATE then 'Y' else 'N' end  as Flag FROM EXP_ECO_RATES;

显然,问题是额外的 case关键字。

我想指出的是,将between与日期/时间值一起使用是危险的。特别是sysdate具有时间组件。

使用显式比较更安全。通常在这种情况下,您打算:

select (case when sysdate >= START_DATE and 
                  sysdate < END_DATE + 1
             then 'Y' else 'N'
        end) as Flag
from EXP_ECO_RATES;

最新更新