You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PL/SQL中实现MySQL的CASE条件查询等效逻辑

Oracle 适配实现方案

Oracle 原生SQL完全支持CASE表达式,不存在需要找特殊替代语法的情况,你之前的MySQL语句无法在Oracle中运行,核心是2个语法差异需要调整:

  • Oracle 中字符串常量必须使用单引号包裹,双引号仅用于标记大小写敏感的标识符(比如带空格、特殊字符的表名/列名)。你原语句里用双引号包裹的"CORRECT"、"INCORRECT"会被Oracle识别为列名,直接触发「标识符无效」的报错。
  • 普通查询不需要额外套PL/SQL语法,直接写标准SQL就能在Oracle SQL Developer中执行,只有需要做流程控制、写存储过程/函数时才需要用到PL/SQL块结构。

直接可用的查询语句如下:

SELECT 
    CASE
        WHEN City LIKE '%Berlin' AND CustomerName LIKE '%kiste'
        THEN 'CORRECT'
        ELSE 'INCORRECT'
    END AS Result, 
    CustomerName, 
    City
FROM Customers;

如果你确实需要在PL/SQL逻辑中执行这段查询(比如需要遍历结果做后续计算、输出),可以参考下面的匿名块写法,注意Oracle中PL/SQL块内的查询结果需要用变量或游标接收:

DECLARE
    CURSOR c_customer IS
        SELECT 
            CASE
                WHEN City LIKE '%Berlin' AND CustomerName LIKE '%kiste'
                THEN 'CORRECT'
                ELSE 'INCORRECT'
            END AS Result, 
            CustomerName, 
            City
        FROM Customers;
BEGIN
    -- 打开输出开关后可在SQL Developer的输出窗口看到结果
    DBMS_OUTPUT.ENABLE;
    FOR rec IN c_customer LOOP
        DBMS_OUTPUT.PUT_LINE(
            '校验结果:'|| rec.Result 
            || ',客户名:' || rec.CustomerName 
            || ',城市:' || rec.City
        );
    END LOOP;
END;
/

内容的提问来源于stack exchange,提问作者tj12345

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 04:45:37