将T-SQL重构为Databricks SQL时ISNULL函数报错的问题排查
ISNULL函数报错原因及修复方案
- 报错核心原因是Databricks SQL与T-SQL的
ISNULL函数定义完全不同:- T-SQL中
ISNULL(expr1, expr2)是双参数函数,作用是:若expr1为NULL则返回expr2,否则返回expr1 - Databricks SQL中
ISNULL(expr)是单参数函数,仅用于判断输入表达式是否为NULL,返回布尔值(TRUE/FALSE)
- T-SQL中
- 你传入了2个参数给Databricks SQL的
ISNULL,直接触发了参数数量不匹配的报错
修复代码的两种方案
方案1:使用IFNULL(与T-SQL的ISNULL功能完全等价)
IFNULL(SIB.Consideration * ST.Ledger, ST.AmountLocal) AS Amount
方案2:使用标准SQL的COALESCE(支持多参数,返回第一个非NULL值)
COALESCE(SIB.Consideration * ST.Ledger, ST.AmountLocal) AS Amount
内容的提问来源于stack exchange,提问作者Patterson
相关产品推荐
相关产品推荐

