使用hive进行数据处理时,为了严谨,判断如下:
CASE
WHEN d.exclusive_price is not NULL AND d.exclusive_price <> '' THEN d.exclusive_price
WHEN e.standard_price is not NULL AND e.standard_price <> '' THEN e.standard_price
END AS price
然后,无论exclusive_price 和standard_price 是否有值,price赋值都是null
后来将条件分别进行查询,如下:
d.exclusive_price is not NULL AS tiaojian1,
d.exclusive_price <> '' AS tiaojian2,
e.standard_price is not NULL AS tiaojian3,
e.standard_price <> '' AS tiaojian4,
当exclusive_price有值(值为1.0)时,得到结果
tiaojian1 : true
tiaojian2 : false
到这就有点看不明白了,有值不等于空串应该是对的,深究后发现,exclusive_price是double类型,中间经过了多层传递,使用时当成了字符串进行判空,发现此处的坑。
结论:
hive中double类型数据 使用 <> '' (不等于空串),返回的是false,引以为戒。