即使在使用之后,我也会在目标表中获得null值
coalesce(x.coulmn, 0)
同时加载数据。列是smallint
数据类型。如果有人遇到过这种问题,请告诉我。
coalesce(cntdim.epsd_ind, 0) as epsd_ind
这应该返回0或1,但我在目标中得到了null。
当输入数据无法转换为目标数据类型时,也遇到了同样的问题。当无法转换时,配置单元会在插入过程中将其静默转换为NULL。为了避免这种情况,使用cast((应用显式转换:
coalesce(cast(x.coulmn as smallint), 0)
在这种情况下,如果值不能转换为smallint
,则强制转换将返回NULL
,coalesce
将返回0
。或者使用其他方法确保插入的数据类型完全兼容或相同。
如果没有cast()
,如果x.column
不为null并且无法转换为smallint,则coalesce
将返回值,并且值将作为null插入:
coalesce(x.coulmn, 0)
在DATE列中插入字符串时也会出现类似的问题。如果字符串的格式不正确,比如'2017-01-010000'
,它将毫无例外地转换为NULL。有趣的是,在单元1.2.x中插入int
的bigint
被截断为适合int,而不是转换为null。