心の言。 2023-08-04 09:24 采纳率: 60%
浏览 4
已结题

case when then在mysql和oracle中的不同

SELECT *
FROM record_dinner
WHERE case when dinner_type_id='10' THEN work_card_id='1' end
同样的sql语句 在mysql中可以查询出数据 但在oracle中却报错缺失关键字 是因为oracle语法不允许case when then之后跟这种语句吗

  • 写回答

3条回答 默认 最新

  • 喝茶品人生 2023-08-04 09:59
    关注

    CASE语句的语法跟MySQL不一样,,Oracle中的CASE语句不支持在THEN子句中使用条件表达式把将条件放在CASE语句之前。正确语法是:

    
    CASE
        WHEN condition THEN result
        [WHEN condition THEN result ...]
        [ELSE result]
    END
    
    

    你应该修改程这样:

    SELECT *
    FROM record_dinner
    WHERE CASE WHEN dinner_type_id='10' AND work_card_id='1' THEN 1 ELSE 0 END = 1
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 8月12日
  • 已采纳回答 8月4日
  • 创建了问题 8月4日

悬赏问题

  • ¥15 matlab数据降噪处理,提高数据的可信度,确保峰值信号的不损失?
  • ¥15 怎么看我在bios每次修改的日志
  • ¥15 python+mysql图书管理系统
  • ¥15 Questasim Error: (vcom-13)
  • ¥15 船舶旋回实验matlab
  • ¥30 SQL 数组,游标,递归覆盖原值
  • ¥15 为什么我的数据接收的那么慢呀有没有完整的 hal 库并 代码呀有的话能不能发我一份并且我用 printf 函数显示处理之后的数据,用 debug 就不能运行了呢
  • ¥20 gitlab 中文路径,无法下载
  • ¥15 用动态规划算法均分纸牌
  • ¥30 udp socket,bind 0.0.0.0 ,如何自动选取用户访问的服务器IP来回复数据