Sql 在配置单元中合并返回null
我想取第一个非缺失值: 而且它不能正常工作Sql 在配置单元中合并返回null,sql,hive,coalesce,Sql,Hive,Coalesce,我想取第一个非缺失值: 而且它不能正常工作 ,coalesce(var1,var2,var3) 虽然 var1=null var2=null var3=variable 由于合并,我得到了空值。两种可能性。首先,这三个都是null。您可以通过添加第四个默认值来测试这一点,以查看是否选择了该值 我的怀疑是第二种可能性,null实际上是'null'。如果是这样,coalesce()将无法直接工作 如果是这种情况,可以使用nullif()或case表达式: coalesce(case when
,coalesce(var1,var2,var3)
虽然
var1=null
var2=null
var3=variable
由于合并,我得到了空值。两种可能性。首先,这三个都是
null
。您可以通过添加第四个默认值来测试这一点,以查看是否选择了该值
我的怀疑是第二种可能性,null
实际上是'null'
。如果是这样,coalesce()
将无法直接工作
如果是这种情况,可以使用nullif()
或case
表达式:
coalesce(case when var1 <> 'null' then var1 end),
case when var2 <> 'null' then var2),
var3)
合并(var1'null'然后var1 end的情况),
当var2为“null”时,则为var2),
var3)
如果null真的是“null”,您不认为COALESCE会返回“null”而不是null。我得到了错误:SemanticException[error 10011]:第9:18行无效函数“nullif”:28:27,org.apache.hive.service.cli.operation。Opera@CharlottePanais,nullif()
是几种SQL方言中CASE
表达式的缩写。在配置单元中,使用COALESCE(当var1='null'然后null ELSE var1 END,当var2='null'然后null ELSE var2…等等)。
(var2,var3,var1)我得到了var3(正确),当我编译coalesce(var3,var1,var2)时,它也能正常工作(给定者var3)。为什么会这样?更重要的是,函数nvl也取决于顺序。我编译nvl(nvl(var1,var2),var3)时有另一个结果,当我编译nvl((var3,var2),var1)时有另一个结果。为什么???