我有数千行这种结构 sum(sp_flag ='Y'时为1,否则为0结束)SP_Fl
如何强制将未知数设为0而不是NULL,并使列为数字?
答案 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。