SSIS 处理NULL
Posted 悦光阴
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SSIS 处理NULL相关的知识,希望对你有一定的参考价值。
不同于SQL Server中NULL表示值是未知的(Unknown Value),没有数据类型,但是,在SSIS中,NULL是有数据类型的,要获取某一个NULL值,必须指定数据类型,例如,变量 Int32的“NULL值”是 NULL(DT_I4),默认值是0。对于变量和参数,不允许有NULL值,因此,NULL值是指默认值,如果变量或参数的值未被显式设置时,SSIS使用默认值。对于Data Flow组件,SSIS保持源数据的NULL值。
一,Variable和Parameter的默认值
在SSIS中,变量不能被设置为NULL,在缺少值时,每种数据类型的变量都会使用默认值:
- 字符类型的默认值是空字符“”,数据类型是DT_WSTR;
- 数值类型的默认值是0;
- Boolean类型的默认值是False;
- DateTime的默认值是 “12/30/1899 12:00:00 AM”;
例如,变量varIntNull的Data Type是Int32,使用Expression:NULL(DT_I4) 为其赋值,则该变量的默认值是0。
如果需要测试变量是否缺失值,可以将变量的值和变量数据类型对应的默认值进行比较,
例如:@[User::MyStringVar]=="",如果表达式返回True,说明变量缺失值;如果表达式返回False,说明变量有值。
二,在Data Flow Task中处理NULL值
在Data Flow中,NULL有Data Type,必须使用NULL(Data_Type)来获取某个Data Type的NULL。要确定某个值是不是NULL,使用ISNULL(Data_Column),这个函数返回值是boolean,如果返回值是True,说明该数据是NULL。如果当ISNULL(Data_Column)返回true时,替换该数据,可以使用如下语句实现TSQL Isnull 函数相同的功能:ISNULL(Data_Column)? DEFAULT_VALUE : Data_Column
例如,列City是varchar(10),当该列为null时,将其替换为字符串"Unknown",在Derived Column转换组件中,增加一个新列,设置Expression是:
(DT_STR,10,1252)(ISNULL(City) ? "Unknown" : City)
以上是关于SSIS 处理NULL的主要内容,如果未能解决你的问题,请参考以下文章