SSIS 或 SQL Server Integration Services 支持所有重要的运算符,例如算术、比较、逻辑和位运算符,以执行各种操作。在实际应用中,您可以单独使用它们,也可以组合使用以实现目标。本文将对每个运算符进行描述,并使用派生列提供详细示例,以了解实际场景。
为了演示 SSIS 运算符,我们使用了下面的产品表,其中包含 14 条记录。请参考 SSIS 中的 Union All 转换、派生列转换、内置函数和SQL Server 文章。

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

双击它以打开派生列转换编辑器。接下来,将所需的列名拖放到表达式下方的行单元格中,并使用适当的运算符执行操作。
SSIS 算术运算符
以下是可用的 SSIS 算术运算符列表,用于执行加法、减法、乘法、除法、取模和负号运算。
- +(加):它将两个数字表达式相加。
- +(连接):如果将其用于字符串列,它会连接两个表达式。例如,要获取全名,可以使用 + 进行字符串连接 [FirstName] + [LastName]。
- –(减):它从第一个数字表达式中减去第二个值。
- –(负号):它对数字表达式取负。
- *(乘):它执行两个数字表达式的乘法。
- /(除):它将第一个数字除以第二个数字表达式。
- %(取模):它在用一个数除以另一个数后返回余数。
- ()(括号):它有助于确定计算优先级(求值顺序)。
以下表达式显示了 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]

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

SSIS 比较运算符
以下是可用的 SSIS 比较运算符列表,用于检查相等、不相等、大于、小于、大于等于和小于等于。
- ==(等于) 它比较两个表达式并检查它们是否相等。
- !=(不等于) 它比较两个表达式并检查它们是否不相等。
- >(大于) 它检查第一个表达式是否大于第二个。
- <(小于) 它检查第一个表达式是否小于第二个。
- >=(大于或等于)它检查第一个表达式是否大于或等于第二个。
- <=(小于或等于)它检查第一个表达式是否小于或等于第二个。
以下表达式显示了 SSIS 比较运算符在表列上的使用情况。
[Color] == "Black"
[SalesAmount] > [StandardCost]
[SalesAmount] < [StandardCost]
[StandardCost] >= 413.1463
[Grade] <= 0

如您所知,比较运算符会检查表达式并返回布尔值 True 或 False。因此,您可以使用条件运算符来返回消息或信息。
如果在条件拆分转换中使用 SSIS 比较运算符,您可以将输入行分流到多个目标。例如,如果您在条件拆分中使用上述表达式,您将获得五个不同的结果集。

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

SSIS 逻辑和位运算符
以下是可用的 SSIS 逻辑和位运算符列表,例如 AND、OR、NOT、XOR 和条件运算符。
- &&(逻辑 AND)它执行逻辑析取 AND 操作。
- ||(逻辑 OR)它执行逻辑析取 OR 操作。
- ? :(条件)它检查给定的表达式,并根据结果返回两个表达式之一。
- &(位 AND)它对两个整数值执行位 AND 操作。
- |(位包含 OR)它对两个整数值执行位 OR 操作。
- ^(位异或)它对两个整数值执行位异或操作。
- ~(位非)它对整数执行位否定。
- !(逻辑非)对布尔操作数取反。
与比较运算符类似,逻辑运算符返回布尔值 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 逻辑和位运算符包以查看操作。逻辑操作。如上所述,检查 True 和 False。位运算符在位级别上操作。例如,9 = 0001001,65 = 1000001。
- 0001001 & 1000001 = 0000001 = 1
- 0001001 | 1000001 = 1001001 = 73
- 0001001 ^ 1000001 = 1001000 = 72
