【问题标题】:case statement with expression throws error [duplicate]带有表达式的case语句引发错误[重复]
【发布时间】:2016-03-01 05:49:01
【问题描述】:

我试图在 Oracle 中执行以下语句,但它会引发错误。请帮忙。

select a.PHONE_NUMBER, 
CASE a.PHONE_NUMBER
WHEN '2262070200' THEN '2262070200'
WHEN a.PHONE_NUMBER = '2262070201' OR a.PHONE_NUMBER = '2262070202' THEN '2ND'
END
from temp_a a;

错误:

ORA-00905:缺少关键字

Temp_a 中的数据

2262070200
2262070201
2262070202
2262070203
2262070204
2262070205
2262070206
2262070223
2262070224
2262070225

【问题讨论】:

    标签: sql oracle case


    【解决方案1】:

    你的查询应该是这样的

    select a.PHONE_NUMBER, 
    CASE 
    WHEN a.PHONE_NUMBER = '2262070200' THEN '2262070200'
    WHEN a.PHONE_NUMBER = '2262070201' OR a.PHONE_NUMBER = '2262070202' THEN '2ND'
    END
    from temp_a a;
    

    【讨论】:

    • Case 支持两种语法,simplesearched
    • 是的,拉利特我知道,但对于他的情况,应该是这样的
    • 是的,因为同一个 WHEN 子句中有多个条件。无论如何,我已将该主题标记为重复,因为之前已提出过类似问题。
    【解决方案2】:

    试试这个:

    SELECT a.PHONE_NUMBER,
      CASE 
        WHEN a.PHONE_NUMBER = '2262070200'
        THEN '2262070200'
        WHEN a.PHONE_NUMBER = '2262070201'  OR a.PHONE_NUMBER   = '2262070202'
        THEN '2ND'
      END
    FROM temp_a a;
    

    【讨论】:

      【解决方案3】:

      我发现了错误

      声明应该是

      select a.PHONE_NUMBER,
      CASE 
      WHEN a.PHONE_NUMBER ='2262070200' 
       THEN '2262070200' 
      WHEN a.PHONE_NUMBER = '2262070201' OR a.PHONE_NUMBER = '2262070202' 
       THEN '2ND' 
      END 
      from temp_a a;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-07-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-28
        • 1970-01-01
        相关资源
        最近更新 更多