表达式中的隐式数据类型转换

当表达式计算器自动将数据从一种数据类型转换为另一种数据类型时,会发生数据类型的隐式转换。例如,如果将 smallint 与 int 比较,则 smallint 便会在执行比较前被隐式转换为 int。

当参数和操作数具有不兼容的数据类型时,表达式计算器无法执行隐式数据转换。此外,表达式计算器无法将任何值隐式转换为布尔值。相反,参数和操作数必须借助于转换运算符显式转换。有关详细信息,请参阅Cast(SSIS 表达式):转换 SSIS 数据类型

以下关系图显示了 BINARY 运算的隐式转换的结果类型。该表中列和行的交集为二元运算的结果类型,该运算中操作数的类型为左 (From) 和右 (To)。

数据类型之间的隐式数据类型转换

有符号整数和无符号整数的交集是可能大于这两者中任何一个的有符号整数。

操作数可对 String、Date、Boolean 以及其他数据类型进行比较。在操作数比较两个值之前,表达式计算器会执行某些隐式转换。有关详细信息,请参阅以下主题:

使用单个参数的函数将返回与参数具有相同数据类型的结果,但下列情况除外:

  • DAY、MONTH 和 YEAR 接受日期并返回一个整数 (DT_I4) 结果。

  • ISNULL 接受任意 SSIS 数据类型的表达式,并返回一个布尔值 (DT_BOOL) 结果。

  • SQUARE 和 SQRT 接受数值表达式,并返回一个非整型数值 (DT_R8) 结果。

如果参数具有相同的数据类型,则结果即为该类型。唯一的例外是,如果对两个 DT_DECIMAL 数据类型的值执行二进制操作,则它将返回 DT_NUMERIC 数据类型的结果。

外部资源

pragmaticworks.com 上的技术文章 SSIS 表达式小抄表