SSRS 支持各种运算符,如算术、比较、连接、逻辑/按位以及位移运算符来执行各种操作。本文提供了每个运算符的定义以及详细示例,以帮助理解实际场景。
我们使用 Adventure Works DW 数据集中的 Customer 和 Fact Internet Sales 表的 Inner join 来演示 SSRS 运算符。下图显示了报表。

SSRS 算术运算符
以下是在 SSRS 报表服务中可用的算术运算符列表。
- ^ 数字的幂。Fields!Bonus.Value ^ 2
- * 执行两个数字的乘法。Fields!Orders.Value * 2
- / 两个数字相除,并返回浮点数值。Fields!Income.Value / 2
- \ 两个数字相除,并返回整数值。Fields!Income.Value / 2
- Mod 对两个数字相除,并返回余数值。Fields!Income.Value Mod 5
- 两个数字相加。如果将其用于字符串列,则执行字符串连接。Fields!Orders.Value + 10
- 从另一个数字中减去一个数字。Fields!Orders.Value – 10
对于此 SSRS 算术运算符示例,我将在“Sales”列的右侧添加一个新列。接下来,右键单击其下方的文本框,然后选择“Expression”。为了理解报表,我建议您参考 SSRS 中有关图表、表、分组和格式化表的文章。
它会打开以下表达式窗口以执行算术运算。以下表达式返回 Orders 的三次方。
=Fields!Orders.Value ^ 3

同样,我将创建六个新列来展示其余的算术运算符。我们使用的表达式如下所示。有关更多函数 >> 点击此处!
=Fields!Income.Value * 30 / 100
=Fields!Sales.Value / Fields!Orders.Value
=Fields!Sales.Value \ Fields!Orders.Value
=Fields!Income.Value MOD 12
=Fields!Sales.Value + Fields!Tax.Value
=Fields!Sales.Value - Fields!ProductCost.Value
请单击预览选项卡以查看算术运算符报表。

SSRS 比较运算符
以下是在 SSRS 报表服务中可用的比较运算符列表。
- < 小于。Fields!Sales.Value < 100
- <= 小于或等于。Fields!Sales.Value <= 100
- 大于。Fields!Sales.Value > 2500
- = 大于或等于。Fields!Sales.Value >= 2500
- = 等于。Fields!Sales.Value = 3000
- <> 不等于。Fields!Sales.Value <> 3000
- Like:执行两个字符串的通配符比较。Fields!Name.Value Like “J*”
- Is:比较两个对象引用变量以检查它们是否相同。Fields!FirstName.Value Is Fields!LastName.Value
通常,<、>、<=、>=、=、<>、Like 和 Is 运算符会执行比较并返回布尔值 True 或 False。例如,Fields!Orders.Value < 3 表达式在订单小于三个时返回 True。否则,它返回 False。但是,最好显示一条消息而不是 True/False。为此,您必须使用 IIF 语句。
对于此 SSRS 比较运算符示例,我将在“Tax”列的右侧添加一个新列。接下来,右键单击其下方的文本框,然后选择“Expression”。为了理解报表,我建议您参考 SSRS 中有关图表、表、分组和格式化表文章。
它会打开以下表达式窗口以执行比较运算。以下表达式检查订单值是否小于三个。如果为 True,则返回 Good;否则,返回 Bad。
=IIf(Fields!Orders.Value < 3, "Good", "Bad")

同样,我将创建另外八个新列来展示其余的比较运算符。我们使用的表达式如下所示。
=IIf(Fields!Orders.Value <= 3, "Good", "Bad")
=IIf(Fields!Orders.Value > 2, "Nice", "Nope")
=IIf(Fields!Orders.Value >= 2, "Nice", "Nope")
=IIf(Fields!Orders.Value = 4, "High", "Low")
=IIf(Fields!Orders.Value <> 4,
Fields!Income.Value * Fields!Orders.Value / 100,
Fields!Income.Value * 7 / 100)
=Fields!LastName.Value Like "C"
=IIf(Fields!Gender.Value Is "M", "Male","Female")
=Fields!FirstName.Value Is Fields!LastName.Value
单击预览选项卡以查看比较运算符的结果。

SSRS 连接运算符
以下是在报表服务中可用的连接运算符列表。
- &:执行字符串连接。Fields!FirstName.Value & ” ” & Fields!LastName.Value
- +:相加两个数字。用于字符串列时,执行字符串连接。
对于此 SSRS 连接运算符示例,我将在“Sales”列的右侧添加三个新列。接下来,右键单击“&”下方的文本框,然后选择“Expression”。为了理解报表,我建议您参考 SSRS 中有关图表、表、分组和格式化表文章。
它会打开以下表达式窗口以执行连接运算。以下表达式将员工的名字、姓氏和性别与保留的空格和“Gender”一词连接或组合起来。
=Fields!FirstName.Value & " " & Fields!LastName.Value
& " Gender = " & Fields!Gender.Value

当您在字符串列或文本上使用 + 运算符时,它表现得像 & 并执行字符串连接。以下代码返回全名。
=Fields!FirstName.Value + " " + Fields!LastName.Value
如果您在数字列上使用 + 运算符,它会相加它们。
=Fields!Income.Value + (Fields!Income.Value * 5 / 100)
单击预览选项卡以查看比较运算符报表的结果。

SSRS 逻辑/按位运算符
以下是在 SSRS 报表服务中可用的逻辑和按位运算符列表。
- And 对于布尔表达式:它执行逻辑析取和数字表达式的按位析取。
- Not 对于布尔表达式:它执行逻辑否定和数字表达式的按位否定。
- Or 对于布尔表达式:它执行逻辑析取和数字表达式的按位析取。
- Xor 对于布尔表达式:它执行逻辑排除和数字表达式的按位排除。
- AndAlso:执行短路逻辑析取。
- OrElse:执行短路逻辑析取。
对于此 SSRS 逻辑和按位运算符示例,我将在“Sales”列的右侧添加七个新列。接下来,右键单击“And”标题下方的文本框,然后选择“Expression”。为了理解报表,我建议您参考 SSRS 中有关图表、表、分组和格式化表文章。
它会打开以下表达式窗口以执行逻辑运算。以下表达式检查收入是否大于 100000 且订单值是否小于或等于 2。如果为 True,则打印 Good;否则,返回 Average。
=IIf((Fields!Income.Value > 100000) And
(Fields!Orders.Value <= 2), "Good", "Average")

如果您不使用 IIF 语句,它将返回布尔值 True 或 False。
=(Fields!Income.Value > 100000) And
(Fields!Orders.Value <= 2)
Or、Not、Xor、And Also 和 Or Else 的其余表达式为
=IIf((Fields!Income.Value > 100000) Or
(Fields!Orders.Value <= 2), "Good", "Bad")
=IIf(Not(Fields!Sales.Value > 600), "Not Ok", "OK")
=IIf((Fields!Income.Value > 100000) Xor
(Fields!Orders.Value <= 2), "Good", "Bad")
=IIf((Fields!Income.Value > 100000) AndAlso
(Fields!Orders.Value <= 2), "Good", "Bad")
=IIf((Fields!Income.Value > 100000) OrElse
(Fields!Orders.Value <= 2), "Good", "Bad")
单击预览选项卡以查看逻辑和按位运算符报表的结果。

SSRS 位移运算符
以下是在报表服务中可用的位移运算符列表。
- << 对位模式执行算术左移。Fields!Counter.Value << 2。
- >> 对位模式执行算术右移。Fields!Counter.Value >> 2。
对于 SSRS 逻辑和按位运算符示例,我将在“Sales”列的右侧添加四列(左移两列,右移两列)。接下来,右键单击“And”标题下方的文本框,然后选择“Expression”。为了理解报表,我建议您参考 SSRS 中有关图表、表、分组和格式化表文章。
它会打开以下表达式窗口以执行位移运算。以下表达式将订单列中的 8 位或 16 位数字向左移动两个位置。
=(Fields!Orders.Value) << 2

向右移动两个位置。
=(Fields!Orders.Value) >> 2
将订单值的位值向左和向右移动四个位置。
=(Fields!Orders.Value) << 4
=(Fields!Orders.Value) >> 4
单击预览选项卡以查看左移和右移位运算符报表的结果。
