我在将一个案例带入HiveQL时遇到了麻烦。
我有一个列的数据:如果列是NULL = FALSE如果列是PEOPLE = TRUE。它返回所有结果为TRUE。
我的角色怎么了?
SELECT
id,
datetime,
CASE
WHEN tb_people !="" THEN 'TRUE'
ELSE 'FALSE'
END
FROM <BD>.<TABLE>
!=""
只检查空白字符串。""
和NULL
是两个不同的东西。因此,您要查找的内容是:
SELECT
id,
datetime,
CASE
WHEN tb_people IS NOT NULL THEN 'TRUE'
ELSE 'FALSE'
END
FROM <BD>.<TABLE>
我还建议使用布尔值true
和false
,而不是字符串字面值。这将允许您将整个case语句替换为ifnotnull(tb_people)
https://hive.apache.org/javadocs/r3.0.0/api/org/apache/hadoop/hive/ql/exec/vector/expressions/IsNotNull.html。