什么是Hive中的NULLIF替换?

Sha*_*han 4 sql hive hiveql hadoop2

我想知道什么是NULLIFHive 的替代品?我正在使用COALESCE,但它不符合我的要求.我的查询语句如下:

COALESCE(A,B,C) AS D
Run Code Online (Sandbox Code Playgroud)

COALESCE将返回第一个NOT NULL值.但是我的A/B/C包含空值,因此COALESCE没有将该值赋给D,因为它将空白视为NOT NULL.但我希望将正确的值分配给D.

在SQL中,我可以使用COALESCE(NULLIF(A,'')......)它,因此它也会检查空白.我试过CASE但它不起作用.

Gor*_*off 7

只需使用case:

select (case when A is null or A = '' then . . . end)
Run Code Online (Sandbox Code Playgroud)

这是标准的SQL,因此它可以在Hive和其他地方使用.

对于您的特定问题:

select (case when A is not null and A <> '' then A
             when B is not null and B <> '' then B
             else C
        end)
Run Code Online (Sandbox Code Playgroud)

你实际上可以缩短到:

select (case when A <> '' then A
             when B <> '' then B
             else C
        end)
Run Code Online (Sandbox Code Playgroud)

因为NULL价值观失败了比较.我会使用这个版本,但通常人们学习SQL更喜欢比较更明确的版本not null.