我无法更改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_DATE
和END_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;