表达式中的 Integration Services 数据类型

表达式计算器使用 Integration Services 数据类型。当数据首次进入 Integration Services 包的数据流中时,数据流引擎将所有列数据转换为 Integration Services 数据类型,因此,表达式使用的列数据已具有 Integration Services 数据类型。条件性拆分和派生列转换中使用的表达式可以引用列,因为它们是包含列数据的数据流的一部分。

表达式还可以使用变量。变量具有 Variant 数据类型,表达式计算器在计算表达式前会将变量的数据类型从 Variant 子类型转换为 Integration Services 数据类型。变量只能使用 Integration Services 数据类型的一个子集。例如,变量不能使用二进制大型对象块 (BLOB) 数据类型。

有关 Integration Services 数据类型和 Variant 数据类型到 Integration Services 数据类型的映射的详细信息,请参阅 Integration Services 数据类型

此外,表达式还可以包含字符串、布尔值和数值。表达式计算器始终将字符串文字转换为 DT_WSTR 数据类型,将布尔值文字转换为 DT_BOOL 数据类型。表达式计算器将引号引起来的所有值都解释为字符串。数值被转换为数值 Integration Services 数据类型的一种。有关将数值转换为数值 Integration Services 数据类型的详细信息,请参阅文字 (SSIS)

注意注意

布尔值是逻辑值而非数字。虽然布尔值在某些环境中可能显示为数字,但它们并非以数字形式存储,而且不同的编程语言以不同的数值表示布尔值,.NET Framework 方法也是如此。

例如,Visual Basic 中可用的转换函数将 True 转换为 -1;但是 .NET Framework 中的 System.Convert.ToInt32 方法将 True 转换为 +1。Integration Services 表达式语言将 True 转换为 -1。

若要避免错误或意外结果,不应编写依赖 True 和 False 为特定数值的代码。如果可能,应将布尔变量的使用限制为与其设计意图对应的逻辑值。

表达式中的数据使用要求

表达式计算器支持所有的 Integration Services 数据类型。但是,根据运算或函数的不同,操作数和参数需要特定的数据类型。表达式计算器对表达式中使用的数据规定了下列数据类型要求:

  • **“逻辑”**运算中所用操作数的取值必须为布尔值。例如,ColumnA > 1&&ColumnB < 2。

  • **“数学”**运算中所用操作数的取值必须为数值。例如,23.75 * 4。

  • 用在比较运算(如逻辑运算和相等运算)中的操作数的计算结果必须为兼容的数据类型。

    例如,如下示例中的表达式之一使用 DT_DBTIMESTAMPOFFSET 数据类型:

    (DT_DBTIMESTAMPOFFSET,3) "1999-10-11 20:34:52.123 -3:30" != (DT_DBDATE)"1999-10-12"

    系统将表达式 (DT_DBDATE)"1999-10-12" 转换为 DT_DBTIMESTAMPOFFSET。此示例的计算结果为 TRUE,因为转换后的表达式变成 "1999-10-12 00:00:00.000 +00:00",这与另一个表达式 (DT_DBTIMESTAMPOFFSET,3) "1999-10-11 20:34:52.123 -3:30" 的值不相等。

  • 传递给数学函数的参数的取值必须为数值数据类型。根据函数或运算的不同,可能需要特定的数值数据类型。例如,HEX 函数需要有符号或无符号整数。

  • 传递给字符串函数的参数的取值必须为字符数据类型:DT_STR 或 DT_WSTR。例如,UPPER("flower")。某些字符串函数(如 SUBSTRING)需要其他整数参数来作为字符串的起始位置和长度。

  • 传递给日期和时间函数的参数的取值必须为有效日期。例如,DAY(GETDATE())。某些函数(如 DATEADD)需要其他整数参数来作为函数加到某个日期的天数。

兼具无符号八字节整数和有符号整数的运算需要显式转换才能使结果格式清楚明了。有关详细信息,请参阅Cast(SSIS 表达式):转换 SSIS 数据类型

许多运算和函数的结果具有预设的数据类型。该类型可能是参数的数据类型,也可能是表达式计算器将结果转换到的数据类型。例如,逻辑或运算符 (||) 的计算结果始终为布尔值,ABS 函数的计算结果是参数的数值数据类型,乘法运算的结果是可完整保存结果的最小数值数据类型。有关计算结果的数据类型的详细信息,请参阅运算符(SSIS 表达式)字符串函数和其他函数(SSIS 表达式)

外部资源

请参阅

其他资源