即使在使用
coalesce(x.coulmn, 0)
加载数据时。列是一个 smallint 数据类型。如果有人遇到过这种问题,请告诉我。
smallint
coalesce(cntdim.epsd_ind, 0) as epsd_ind
这应该返回0或1,但是我在目标中得到null。
6kkfgxo01#
当输入数据无法转换为目标数据类型时,也面临同样的问题。当无法转换时,配置单元会在插入过程中将其静默地转换为null。要避免这种情况,请使用cast()应用显式转换:
coalesce(cast(x.coulmn as smallint), 0)
在这种情况下,如果值不能转换为 smallint ,演员将返回 NULL , coalesce 会回来的 0 . 或者使用其他方法来确保插入的是兼容的或完全相同的数据类型。没有 cast() 如果 x.column 不为null且无法转换为smallint, coalesce 将返回值,并且值将作为null插入:
NULL
coalesce
0
cast()
x.column
在日期列中插入字符串时,也可以观察到类似的问题。如果字符串格式错误,比如 '2017-01-010000' 它将毫无例外地转换为null。有趣的是, bigint 插入 int 在配置单元1.2中,x被截断以适合int,而不是转换为null。
'2017-01-010000'
bigint
int
1条答案
按热度按时间6kkfgxo01#
当输入数据无法转换为目标数据类型时,也面临同样的问题。当无法转换时,配置单元会在插入过程中将其静默地转换为null。要避免这种情况,请使用cast()应用显式转换:
在这种情况下,如果值不能转换为
smallint
,演员将返回NULL
,coalesce
会回来的0
. 或者使用其他方法来确保插入的是兼容的或完全相同的数据类型。没有
cast()
如果x.column
不为null且无法转换为smallint,coalesce
将返回值,并且值将作为null插入:在日期列中插入字符串时,也可以观察到类似的问题。如果字符串格式错误,比如
'2017-01-010000'
它将毫无例外地转换为null。有趣的是,bigint
插入int
在配置单元1.2中,x被截断以适合int,而不是转换为null。