在hive中 空值判断有两种
1.一种标示为NULL
column1 | column2 |
---|---|
dsf | NULL |
DFSDFS | ddfff |
2.一种没有标示 直接为空
column1 | column2 |
---|---|
dfs | |
fdfs | fd |
如果是第一种,在表中显示为NULL,则在底层数据中,保存的可能为NULL或\n
此时 通过语句column2 is null
即可查询为空值的字段
如果为第二种,在表中没有值,其表示的为字段不为null且为空字符串的值
此时 要通过column2="
或者 length(column2) =0
下面补充一个 如何处理hive的NULL值
hive中并没有sql server的isnull()
函数 也没有 mysql的ifnull()
函数
但它可以用if
语句替代
假设有表 column:
产品名称 | 单价 | 售出产品个数 |
---|---|---|
猪肉 | 30 | 2 |
白菜 | 4 | 5 |
油麦菜 | 2 | |
玉米 | 3 | 1 |
在hive里面计算每个产品分别卖了多少钱
在hive中可以这么写(暂时忽略中英文):
select
产品名称
,单价*if(售出产品个数 is null, 0, 售出产品个数) 总售价
from table
其中
if(售出产品个数 is null, 0, 售出产品个数)
表示的是 如果售出产品个数为NULL,则置其为0, 否则 置其为原值。
同理 如果处理hive的空值 可以在if
语句中用length()
来作为判断条件