语法 (SSIS)

适用范围:SQL Server Azure 数据工厂中的 SSIS Integration Runtime

Integration Services 表达式语法与 C 和 C# 语言使用的语法类似。 表达式可包括多种元素,例如标识符(列和变量)、文字、运算符和函数。 本主题概述了表达式计算器语法在应用于不同的表达式元素时的特殊要求。

注意

在以前版本的 Integration Services中,如果某表达式的计算结果具有 Integration Services 数据类型 DT_WSTR 或 DT_STR,则结果将具有 4000 个字符的限制。 这一限制已被取消。

有关使用特定运算符和函数的示例表达式,请参阅以下主题中关于每个运算符和函数的主题:运算符(SSIS 表达式)函数(SSIS 表达式)

有关使用多个运算符和函数以及标识符和文本的示例表达式,请参阅 高级 Integration Services 表达式的示例

有关要在属性表达式中使用的示例表达式,请参阅 在包中使用属性表达式

标识符

表达式可包含列和变量标识符。 列可以源自数据源或由数据流中的转换创建。 表达式可以使用沿袭标识符来引用列。 沿袭标识符是唯一地标识包元素的数字。 表达式中引用的沿袭标识符必须包含井号 (#) 前缀。 例如,使用 #138 引用沿袭标识符 138。

表达式可包含 SSIS 提供的系统变量和自定义变量。 在表达式中引用的变量必须包含 @ 前缀。 例如,使用 @Counter 引用 Counter 变量。 @ 字符不是变量名的一部分,它仅向表达式计算器指示该标识符是一个变量。 有关详细信息,请参阅标识符 (SSIS)

文本

表达式可以包含数值、字符串和布尔文字。 表达式中使用的字符串文字必须用引号引起来。 数值和布尔文字不使用引号。 表达式语言包含用于常用转义字符的转义序列。 有关详细信息,请参阅文本 (SSIS)

运算符

表达式计算器提供了一组运算符,这些运算符可提供与 Transact-SQL、C++ 和 C# 等语言中的运算符集类似的功能。 但是,表达式语言还包含其他运算符,并使用您可能不熟悉的其他符号。 有关详细信息,请参阅运算符(SSIS 表达式)

命名空间解析运算符

表达式使用命名空间解析运算符 (::) 来消除同名变量的歧义。 通过使用命名空间解析运算符,您可以用变量的命名空间来限定变量,从而可以在一个包中使用多个同名变量。

转换运算符

转换运算符将表达式结果、列值、变量值和常量从一种数据类型转换为另一种数据类型。 表达式语言提供的转换运算符与 C 和 C# 语言提供的运算符类似。 在 Transact-SQL 中,CAST 和 CONVERT 函数提供了此功能。 转换运算符语法与 CAST 和 CONVERT 使用的语法在下列方面存在差别:

  • 可将表达式用作参数。

  • 其语法不包含 CAST 关键字。

  • 其语法不包含 AS 关键字。

条件运算符

条件运算符基于布尔表达式的值返回两个表达式之一。 表达式语言提供的条件运算符与 C 和 C# 语言提供的运算符类似。 在多维表达式 (MDX) 中,IIF 函数提供类似的功能。

逻辑运算符

表达式语言支持逻辑非运算符的 ! 字符。 在 Transact-SQL 中,! 运算符 内置于关系运算符集中。 例如,Transact-SQL 提供 > 和 !> 运算符。 SSIS 表达式语言不支持 ! 运算符与 其他运算符的组合。 例如,将 ! 和 > 组合为 !> 是 无效的。 但是,表达式语言支持用于“不等于”比较的内置 != 字符组合。

相等运算符

表达式计算器语法提供 == 相等运算符。 此运算符等价于 Transact-SQL 中的 = 运算符和 C# 中的 == 运算符。

函数

表达式语言包含类似于 Transact-SQL 函数和 C# 方法的日期和时间函数、数学函数及字符串函数。

一些函数具有与 Transact-SQL 函数相同的名称,但在表达式计算器中,功能稍有不同。

  • 在 Transact-SQL 中,ISNULL 函数将 Null 值替换为指定值,而表达式计算器的 ISNULL 函数则根据表达式是否为 Null 返回布尔值。

  • 在 Transact-SQL 中,ROUND 函数提供截断结果集的选项,而表达式计算器的 ROUND 函数则不提供。

有关详细信息,请参阅函数(SSIS 表达式)

在数据流组件中使用表达式