Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在配置单元中合并返回null_Sql_Hive_Coalesce - Fatal编程技术网

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)时有另一个结果。为什么???