编写 CASE 语句错误 ORA-00923
Posted
技术标签:
【中文标题】编写 CASE 语句错误 ORA-00923【英文标题】:Writing CASE statement Error ORA-00923 【发布时间】:2010-12-09 14:12:16 【问题描述】:我有一个使用 CREATE 和 INSERT INTO 语句填充的数据库。我现在正在尝试编写一个 CASE statemenet,它将显示其 payment_due_date 已超过今天日期的“客户”。下面是下面的代码
CREATE STATEMENT 'Ord'(订单)
CREATE TABLE Ord(OrderID varchar2(9) PRIMARY KEY,
CustomerID varchar(9) REFERENCES Customer(CustomerID),
Expected_Delivery_Date date DEFAULT sysdate NOT NULL,
Actual_Delivery_Date date DEFAULT sysdate NOT NULL,
Payment_Due_Date date DEFAULT sysdate NOT NULL,
Order_Date date DEFAULT sysdate NOT NULL, Price Varchar(10),
Order_Placed varchar2(1) CONSTRAINT OrderPlaced
CHECK(Order_Placed IN('Y','N')) NOT NULL, Order_Confirmed varchar2(1)
CONSTRAINT Order_Confirmed CHECK(Order_Confirmed IN('Y','N'))
NOT NULL, Order_Completed varchar2(1) CONSTRAINT Order_Completed
CHECK(Order_Completed IN('Y','N')) NOT NULL)
插入声明
INSERT INTO Ord VALUES(401565981, 501623129,
'10-Dec-10', '11-Dec-10', '07-Dec-10', '03-Dec-10','£14.99', 'Y', 'Y', 'Y')
案例陈述
SELECT OrderID, CustomerID, Payment_Due_Date CASE WHEN
Payment_Due_Date = '08-Dec-10' THEN 'Send Final Demand Letter'
ELSE 'Do not send letter'
END FROM Ord;
当我尝试运行上述案例语句时,我收到以下错误
ORA-00923: 未找到 FROM 关键字 预期的地方 00923. 00000 - “在预期的地方找不到 FROM 关键字” *原因: *操作:行错误:26 列:50
有没有办法解决这个问题?
【问题讨论】:
【参考方案1】:我认为 Payment_Due_Date 和 CASE 之间需要一个逗号。
【讨论】:
叶 (+1)。 CASE 语句的结果只是结果集中的另一列,因此它需要一个逗号。 您可以从代码中看到我正在尝试编写查询,以便如果付款到期日期已超过今天,则查询应输出消息“发送最终需求信”,它非常相似到 'if else statement' Payment_Due_Date = 我想你需要使用Payment_Due_Date <= '2010-12-08'
,但我对 Oracle 的细节知之甚少 :)(编辑:哎呀,=)
啊,对不起:我以前没见过 '08-Dec-10' 格式。您的解决方案是正确的。
@user532339 啊!请不要依赖字符串到日期的隐式转换。理想情况下使用带有格式字符串to_date('08-DEC-2010', 'DD-MON-YYYY')
的to_date 函数或ANSI 日期文字date '2010-12-08'
。隐式转换就是自找麻烦!以上是关于编写 CASE 语句错误 ORA-00923的主要内容,如果未能解决你的问题,请参考以下文章
ORA-00923: 在 oracle 中未找到预期错误的 FROM 关键字
错误:ORA-00923:在预期的地方找不到 FROM 关键字
我将如何修复这些“ORA-00933:SQL 命令未正确结束”“ORA-00923:未在预期位置找到 FROM 关键字”错误?