Databricks SQL ISNULL语句空值替换为0的正确写法咨询
Azure Databricks SQL 空值替换语法修正
你当前使用的ISNULL()是TSQL专属语法,Azure Databricks SQL 不支持该函数,可通过以下两种等价方案实现左连接后空值转0的需求:
- 方案1:适配TSQL使用习惯,仅替换函数名为
IFNULL即可,参数逻辑和原ISNULL完全一致:
%sql SELECT f.global_key AS glb_num ,f.global_name AS glb_name ,IFNULL(r.tm2016, 0) AS tm2016 ,IFNULL(r.tm2017, 0) AS tm2017 ,IFNULL(r.tm2018, 0) AS tm2018 FROM co_family AS f -- 企业架构表 LEFT JOIN main_revenue AS r -- 营收表 ON f.global_key = r.global_key
- 方案2:使用标准SQL通用的
COALESCE函数,支持多参数按顺序判空,适配复杂场景:
%sql SELECT f.global_key AS glb_num ,f.global_name AS glb_name ,COALESCE(r.tm2016, 0) AS tm2016 ,COALESCE(r.tm2017, 0) AS tm2017 ,COALESCE(r.tm2018, 0) AS tm2018 FROM co_family AS f -- 企业架构表 LEFT JOIN main_revenue AS r -- 营收表 ON f.global_key = r.global_key
如果需要实现多优先级判空逻辑,可直接向COALESCE追加参数,示例:COALESCE(r.tm2018, r.tm2017, r.tm2016, 0) 代表优先取2018年营收,为空则依次取前两年,都为空返回0。
内容的提问来源于stack exchange,提问作者Chris Beredimas
相关产品推荐
相关产品推荐

