我无法在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:找不到FROM关键字。
START_DATE
和END_DATE
是包含日期数据类型的列。
答案 0 :(得分:1)
删除case
处的end case
关键字。 Oracle期望在FROM
之后end
,因为这是CASE
表达式的正确语法,但它找到了case
关键字,因此您收到了错误 - {{ 1}}
将其更改为:
ORA-00923: FROM keyword not found where expected.
答案 1 :(得分:1)
显然,问题是额外的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;