Sql 在Cloudera中将0更改为NULL

Sql 在Cloudera中将0更改为NULL,sql,cloudera-cdh,Sql,Cloudera Cdh,我正在寻找一种解决方案,将变量的所有属性从0值更改为NULL值,或者反之亦然,以保持数据集的一致性 例如: everyday_banking 0 NULL NULL NULL 0 0 0 0 0 0 0 0 0 0 0 NULL NULL NULL 如何在CREATETABLE语句中实现这一点,因为我有很多这样的语句 CREATE TABLE new AS SELECT customer_number, everyday_banking, insurance from old; 使用C

我正在寻找一种解决方案,将变量的所有属性从0值更改为NULL值,或者反之亦然,以保持数据集的一致性 例如:

everyday_banking
0
NULL
NULL
NULL
0
0
0
0
0
0
0
0
0
0
0
NULL
NULL
NULL
如何在CREATETABLE语句中实现这一点,因为我有很多这样的语句

CREATE TABLE new
AS SELECT 
customer_number, 
everyday_banking, 
insurance
from old;

使用Cast或在Cloudera中需要如何执行此操作?

在创建并填充表之后,您可以使用update语句来执行此操作。要将所有空值替换为零,您可以尝试:

UPDATE new
SET everyday_banking = COALESCE(everyday_banking, 0);
要将零替换为NULL,请使用大小写表达式:

UPDATE new
SET everyday_banking = CASE WHEN everyday_banking = 0 THEN NULL END;
试试这个:

CREATE TABLE new AS SELECT customer_number, COALESCE(everyday_banking,0), insurance from old;