编写 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: 未找到要求的 FROM 关键字

ORA-00923 甲骨文错误

查询在预期的地方找不到关键字错误 ora-00923

ORA-00923: 在 oracle 中未找到预期错误的 FROM 关键字

错误:ORA-00923:在预期的地方找不到 FROM 关键字

我将如何修复这些“ORA-00933:SQL 命令未正确结束”“ORA-00923:未在预期位置找到 FROM 关键字”错误?