SSIS 运算符

SSIS 或 SQL Server Integration Services 支持所有重要的运算符,例如算术、比较、逻辑和位运算符,以执行各种操作。在实际应用中,您可以单独使用它们,也可以组合使用以实现目标。本文将对每个运算符进行描述,并使用派生列提供详细示例,以了解实际场景。

为了演示 SSIS 运算符,我们使用了下面的产品表,其中包含 14 条记录。请参考 SSIS 中的 Union All 转换派生列转换内置函数SQL Server 文章。

Source Table

SSIS 运算符示例

对于这些运算符的示例,我将添加一个数据流任务,然后双击它进入数据流区域。接下来,添加 OLE DB 源以从上述 SQL 数据库表中读取数据。请将 OLE DB 源连接到派生列转换,以编写运算符表达式并创建新列。

Data Flow to add Derived Column

双击它以打开派生列转换编辑器。接下来,将所需的列名拖放到表达式下方的行单元格中,并使用适当的运算符执行操作。

SSIS 算术运算符

以下是可用的 SSIS 算术运算符列表,用于执行加法、减法、乘法、除法、取模和负号运算。

  1. +(加):它将两个数字表达式相加。
  2. +(连接):如果将其用于字符串列,它会连接两个表达式。例如,要获取全名,可以使用 + 进行字符串连接 [FirstName] + [LastName]。
  3. –(减):它从第一个数字表达式中减去第二个值。
  4. –(负号):它对数字表达式取负。
  5. *(乘):它执行两个数字表达式的乘法。
  6. /(除):它将第一个数字除以第二个数字表达式。
  7. %(取模):它在用一个数除以另一个数后返回余数。
  8. ()(括号):它有助于确定计算优先级(求值顺序)。

以下表达式显示了 SSIS 算术运算符在表列上的使用情况。

Add  =  [SalesAmount] + [TaxAmt]

Subtract = [SalesAmount] - [StandardCost]

Multiply = [StandardCost] * [Orders]

Negate = - [SalesAmount]

Divide = [SalesAmount] / [Orders]

Modulo = (DT_I8)[SalesAmount] % 4

No Parentheses = [StandardCost] - [SalesAmount] + [TaxAmt] * [Orders]

Parentheses = (([StandardCost] - [SalesAmount]) + [TaxAmt]) * [Orders]
SSIS Arithmetic Operators expression

单击“确定”关闭编辑器窗口。接下来,拖放“Union All”转换并将派生列连接到它。接下来,右键单击连接节点并选择“启用数据查看器”。请运行 SSIS 算术运算符包以查看算术运算。

SSIS Arithmetic Operators add, subtract, multiply, divide, modulo Output

SSIS 比较运算符

以下是可用的 SSIS 比较运算符列表,用于检查相等、不相等、大于、小于、大于等于和小于等于。

  • ==(等于) 它比较两个表达式并检查它们是否相等。
  • !=(不等于) 它比较两个表达式并检查它们是否不相等。
  • >(大于) 它检查第一个表达式是否大于第二个。
  • <(小于) 它检查第一个表达式是否小于第二个。
  • >=(大于或等于)它检查第一个表达式是否大于或等于第二个。
  • <=(小于或等于)它检查第一个表达式是否小于或等于第二个。

以下表达式显示了 SSIS 比较运算符在表列上的使用情况。

[Color] == "Black"

[SalesAmount] > [StandardCost]

[SalesAmount] < [StandardCost]

[StandardCost] >= 413.1463

[Grade] <= 0
Comparison expression

如您所知,比较运算符会检查表达式并返回布尔值 True 或 False。因此,您可以使用条件运算符来返回消息或信息。

如果在条件拆分转换中使用 SSIS 比较运算符,您可以将输入行分流到多个目标。例如,如果您在条件拆分中使用上述表达式,您将获得五个不同的结果集。

SSIS Comparison Operators expression inside conditional split

单击“确定”关闭编辑器窗口。接下来,运行比较运算符包以查看比较操作。

SSIS comparison Operators result

SSIS 逻辑和位运算符

以下是可用的 SSIS 逻辑和位运算符列表,例如 AND、OR、NOT、XOR 和条件运算符。

  1. &&(逻辑 AND)它执行逻辑析取 AND 操作。
  2. ||(逻辑 OR)它执行逻辑析取 OR 操作。
  3. ? :(条件)它检查给定的表达式,并根据结果返回两个表达式之一。
  4. &(位 AND)它对两个整数值执行位 AND 操作。
  5. |(位包含 OR)它对两个整数值执行位 OR 操作。
  6. ^(位异或)它对两个整数值执行位异或操作。
  7. ~(位非)它对整数执行位否定。
  8. !(逻辑非)对布尔操作数取反。

与比较运算符类似,逻辑运算符返回布尔值 True 或 False。因此,使用条件运算符来显示消息。以下表达式显示了 SSIS 逻辑和位运算符在表列上的使用情况。

[SalesAmount] > 1000 && [Orders] >= 6

[SalesAmount] > 1000 || [Orders] >= 6

[Orders] != 2

9 & 65

9 | 65

9 ^ 65

~9

([SalesAmount] > [StandardCost]) ? "Good" : "Bad"
SSIS logical and bitwise Operators Expression

单击“确定”关闭编辑器窗口。接下来,运行 SSIS 逻辑和位运算符包以查看操作。逻辑操作。如上所述,检查 True 和 False。位运算符在位级别上操作。例如,9 = 0001001,65 = 1000001。

  • 0001001 & 1000001 = 0000001 = 1
  • 0001001 | 1000001 = 1001001 = 73
  • 0001001 ^ 1000001 = 1001000 = 72
SSIS logical and bitwise AND,  OR, NOT Operators package output