CASE WHEN 在 HiveQL 中的条件

Posted

技术标签:

【中文标题】CASE WHEN 在 HiveQL 中的条件【英文标题】:CASE WHEN conditional in HiveQL 【发布时间】:2021-08-23 13:40:42 【问题描述】:

我无法将案例带入 HiveQL。

我有一列包含数据: 如果列是 NULL = FALSE 如果该列是 PEOPLE = TRUE。它将所有结果返回为 TRUE。

我的角色有什么问题?

SELECT 
    id,
    datetime,
    CASE 
        WHEN tb_people !="" THEN 'TRUE'
        ELSE 'FALSE'
    END
 FROM <BD>.<TABLE>

【问题讨论】:

如果所有结果都是TRUE,这意味着你的列中没有空字符串或NULL,因为NULL会触发ELSE部分,以及空字符串 【参考方案1】:

!="" 仅检查空白字符串。 ""NULL 是两个不同的东西。因此,您正在寻找的是:

SELECT 
    id,
    datetime,
    CASE 
        WHEN tb_people IS NOT NULL THEN 'TRUE'
        ELSE 'FALSE'
    END
 FROM <BD>.<TABLE>

我还建议使用布尔值 truefalse 而不是字符串文字。这可以让你用ifnotnull(tb_people)https://hive.apache.org/javadocs/r3.0.0/api/org/apache/hadoop/hive/ql/exec/vector/expressions/IsNotNull.html替换你的整个case语句。

【讨论】:

以上是关于CASE WHEN 在 HiveQL 中的条件的主要内容,如果未能解决你的问题,请参考以下文章

drools中的条件 when

SQL中的条件判断语句(case when zhen if,ifnull)用法

语法SQL中的case when then else end用法-解决一个字段根据条件取不同值

mysql中的group_concat与“case when”条件

MySQL 条件, case when 和 if 方法

oracle中的条件语句