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

CASE语句的WHEN子句中是否可以使用OR逻辑运算符?

CASE语句多值匹配问题解答
  • 绝大多数编程语言的标准CASE/SWITCH语句,不支持你示例里在WHEN子句后直接用OR连接多个匹配值的写法。你写的WHEN "Cell" OR "PASTORS PHONE" OR "Alternative"不会按预期执行:OR是布尔运算符,会把两侧的字符串值转为布尔类型做运算,完全达不到“匹配多个值之一”的效果。
  • 你不需要为每个取值单独写一整组WHEN加执行逻辑,对应你写的OpenEdge ABL语法,单个WHEN分支本身支持直接列出多个匹配值,用逗号分隔即可,不需要加OR。

修正后的可正常运行的代码如下:

CASE ttPhoneData.phoneDescription:
    WHEN "Cell", "PASTORS PHONE", "Alternative" THEN
        RUN CreatePhone("Mobile", TRUE, ttPhoneData.phone).
    WHEN "Business", "ChurchPhone", "ChurchPhone2" THEN
        RUN CreatePhone("Work", TRUE, ttPhoneData.phone).
    WHEN "Home" THEN 
        RUN CreatePhone("Home", TRUE, ttPhoneData.phone).
END CASE.

额外提醒:你原代码最后一个WHEN分支里的参数存在笔误,把ttPhoneData.phone错写为ttPhoneData,phome,运行时会触发参数不匹配错误,上面的修正版已经修复了这个问题。

如果是使用不支持单分支多值匹配的老旧编程语言,也有两种无需重复写执行逻辑的方案:

  • 利用CASE语句的穿透特性,把多个匹配值对应的WHEN分支连续排列,只在最后一个匹配值的分支下写要执行的逻辑
  • 如果匹配规则较复杂,直接换成IF-ELSE IF结构做判断,就可以正常用OR连接多个等值判断条件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 02:27:19