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

如何将SQL中的IF语句转为CASE语句并用于BigQuery的WHERE子句

BigQuery下的CASE语句转换与查询实现

首先将原IF语句转换为BigQuery支持的CASE语句,由于多个地址值对应同一ZIP,可使用IN简化条件判断:

CASE
  WHEN address IN ('US\\Madison Drive', 'US\\123 Madison Dr', 'US\\123 Madison-Dr') THEN 'ZIP1234'
  ELSE 'ZIP9999'
END

关键注意点

  • BigQuery中字符串内的反斜杠需要转义,因此原地址中的\需替换为\\
  • 使用IN合并相同结果的多条件,比重复编写WHEN子句更高效简洁

整合到WHERE条件的完整查询

假设需求是筛选出根据地址规则应匹配ZIP1234的记录,完整SQL如下:

SELECT a.ID, a.NAME, a.Address, a.ZIP
FROM table_A a
LEFT JOIN table_B b ON a.ID = b.ID
WHERE CASE
        WHEN a.address IN ('US\\Madison Drive', 'US\\123 Madison Dr', 'US\\123 Madison-Dr') THEN 'ZIP1234'
        ELSE 'ZIP9999'
      END = 'ZIP1234'

如果需要将计算后的ZIP作为字段返回,同时保留过滤逻辑,可调整为:

SELECT 
  a.ID, 
  a.NAME, 
  a.Address, 
  a.ZIP,
  CASE
    WHEN a.address IN ('US\\Madison Drive', 'US\\123 Madison Dr', 'US\\123 Madison-Dr') THEN 'ZIP1234'
    ELSE 'ZIP9999'
  END AS calculated_ZIP
FROM table_A a
LEFT JOIN table_B b ON a.ID = b.ID
WHERE CASE
        WHEN a.address IN ('US\\Madison Drive', 'US\\123 Madison Dr', 'US\\123 Madison-Dr') THEN 'ZIP1234'
        ELSE 'ZIP9999'
      END = 'ZIP1234'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 17:55:21