问题: OLEDB源在手机中具有空值。 目标表具有Phone NOT NULL DEFAULT 1234567。 OLEDB目的地未选中Keep Nulls
根据我在此阅读https://msdn.microsoft.com/en-us/library/ms187887(v=sql.110).aspx
如果传入的值为NULL,则应插入列的默认值。
但它没有发生。而且我不想在SSIS中进行任何转换。有人可以帮忙吗?
答案 0 :(得分:1)
在您的数据流任务中,在OLE_DB源中,将数据访问模式设置为' SQL命令'并写出如下的选择语句
SELECT Column_A
,Column_B
,ISNULL(Phone, 1234567)
,Column_C
,Column_D etc.
FROM Source_Table
答案 1 :(得分:0)
您可以在数据流任务中的SQL命令中编写CASE语句:
select
CASE
when PhoneNumber IS NUll then '1234567' else table_name.PhoneNumber END as PhoneNumber,
from table table_name
答案 2 :(得分:0)
我相信答案是,要使Keep Nulls选项起作用,必须从数据源中删除该列。
创建表#tmpdel ( INT NOT NULL默认值0, b INT NOT NULL默认值0 )
插入#tmpdel(a)值(1) - WORKS 插入#tmpdel(a,b)值(1,null) - FAILS