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

Oracle转BigQuery:含Decode的查询语句等效写法求助

Oracle查询转BigQuery:DECODE函数的替换方案

原Oracle查询语句

select e.name,d.dept
from employee e inner join department d 
on e.eid = d.eid and decode(e.unit,null,1,0,1,1,1,2,2)=decode(d.unit,null,1,0,1,1,1,2,2)

转换后的BigQuery等效语句

由于BigQuery不支持Oracle的DECODE函数,这里用CASE表达式实现完全等价的逻辑:

select e.name,d.dept
from employee e inner join department d 
on e.eid = d.eid 
and CASE 
    WHEN e.unit IS NULL OR e.unit IN (0,1) THEN 1
    WHEN e.unit = 2 THEN 2
END = CASE 
    WHEN d.unit IS NULL OR d.unit IN (0,1) THEN 1
    WHEN d.unit = 2 THEN 2
END

逻辑说明

原Oracle语句中DECODE(e.unit,null,1,0,1,1,1,2,2)的逻辑是:

  • 当e.unit为NULL、0或1时,返回1
  • 当e.unit为2时,返回2
    通过CASE表达式可以完全复现这一判断逻辑,保证两张表的关联条件与原Oracle查询一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 20:09:30