防止Hive中的“ NULL”值

时间:2018-09-30 07:14:52

标签: hive

我有数千行这种结构 sum(sp_flag ='Y'时为1,否则为0结束)SP_Fl

如何强制将未知数设为0而不是NULL,并使列为数字?

1 个答案:

答案 0 :(得分:0)

使用coalesce (or) NVL函数将NULL值替换为0。

hive> select coalesce(int(null),0); --replacing integer null value with 0
+------+--+
| _c0  |
+------+--+
| 0    |
+------+--+
hive> select nvl(int(null),0); --replacing integer null value with 0
+------+--+
| _c0  |
+------+--+
| 0    |
+------+--+

有关替换空字符串/空值的更多详细信息,请参见this链接。

  

更新:

1。替换字符串中的NULL值:

hive> select coalesce(string(NULL),0);
+------+--+
| _c0  |
+------+--+
| 0    |
+------+--+
hive> select coalesce(string(NULL),0);
+------+--+
| _c0  |
+------+--+
| 0    |
+------+--+

2。替换“ NULL”字符串:

我们不能用 coalesce 替换NULL字符串,因为数据中包含NULL字符串(长度为4),但是合并只能替换null值。

hive> select coalesce(string("NULL"),0),length(string("NULL"));
+-------+------+--+
|  _c0  | _c1  |
+-------+------+--+
| NULL  | 4    |
+-------+------+--+

如果您拥有此类数据,请编写一个case statement (or) regexp_replace (or) replace函数以将NULL字符串替换为0。