HiveQL CASE WHEN条件判断返回结果全为TRUE的问题咨询
错误原因
- 逻辑不匹配需求:现有语句的判断条件是
tb_people != "",只要字段值不是空字符串就会返回TRUE,完全没有按照要求判断「字段值为PEOPLE才返回TRUE」的逻辑,只要表中没有存空字符串的tb_people记录,所有非空值都会命中该条件返回TRUE,这是结果全为TRUE的核心原因。 - 未正确处理NULL值:Hive中NULL和任意值做比较运算的结果都是UNKNOWN,不会被
!= ""这类常规比较条件命中,NULL的判断必须使用IS NULL/IS NOT NULL语法。
修正后的查询语句
SELECT id, datetime, CASE WHEN tb_people = 'PEOPLE' THEN 'TRUE' WHEN tb_people IS NULL THEN 'FALSE' -- 非PEOPLE也非NULL的其他值按需求默认返回FALSE,可自行调整分支逻辑 ELSE 'FALSE' END AS tb_people_flag FROM <BD>.<TABLE>
内容的提问来源于stack exchange,提问作者Felipe
相关产品推荐
相关产品推荐

