SSRS 运算符

SSRS 支持各种运算符,如算术、比较、连接、逻辑/按位以及位移运算符来执行各种操作。本文提供了每个运算符的定义以及详细示例,以帮助理解实际场景。

我们使用 Adventure Works DW 数据集中的 Customer 和 Fact Internet Sales 表的 Inner join 来演示 SSRS 运算符。下图显示了报表。

Source Table

SSRS 算术运算符

以下是在 SSRS 报表服务中可用的算术运算符列表。

  1. ^ 数字的幂。Fields!Bonus.Value ^ 2
  2. * 执行两个数字的乘法。Fields!Orders.Value * 2
  3. / 两个数字相除,并返回浮点数值。Fields!Income.Value / 2
  4. \ 两个数字相除,并返回整数值。Fields!Income.Value / 2
  5. Mod 对两个数字相除,并返回余数值。Fields!Income.Value Mod 5
  6. 两个数字相加。如果将其用于字符串列,则执行字符串连接。Fields!Orders.Value + 10
  7. 从另一个数字中减去一个数字。Fields!Orders.Value – 10

对于此 SSRS 算术运算符示例,我将在“Sales”列的右侧添加一个新列。接下来,右键单击其下方的文本框,然后选择“Expression”。为了理解报表,我建议您参考 SSRS 中有关图表分组格式化表的文章。

它会打开以下表达式窗口以执行算术运算。以下表达式返回 Orders 的三次方。

=Fields!Orders.Value ^ 3
Arithmetic Operators Expression

同样,我将创建六个新列来展示其余的算术运算符。我们使用的表达式如下所示。有关更多函数 >> 点击此处!

=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 Arithmetic Operators Report preview

SSRS 比较运算符

以下是在 SSRS 报表服务中可用的比较运算符列表。

  1. < 小于。Fields!Sales.Value < 100
  2. <= 小于或等于。Fields!Sales.Value <= 100
  3. 大于。Fields!Sales.Value > 2500
  4. = 大于或等于。Fields!Sales.Value >= 2500
  5. = 等于。Fields!Sales.Value = 3000
  6. <> 不等于。Fields!Sales.Value <> 3000
  7. Like:执行两个字符串的通配符比较。Fields!Name.Value Like “J*”
  8. 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")
Comparison Operators Expression

同样,我将创建另外八个新列来展示其余的比较运算符。我们使用的表达式如下所示。

=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 Comparison Operators Report Preview

SSRS 连接运算符

以下是在报表服务中可用的连接运算符列表。

  • &:执行字符串连接。Fields!FirstName.Value & ” ” & Fields!LastName.Value
  • +:相加两个数字。用于字符串列时,执行字符串连接。

对于此 SSRS 连接运算符示例,我将在“Sales”列的右侧添加三个新列。接下来,右键单击“&”下方的文本框,然后选择“Expression”。为了理解报表,我建议您参考 SSRS 中有关图表、表、分组和格式化表文章。

它会打开以下表达式窗口以执行连接运算。以下表达式将员工的名字、姓氏和性别与保留的空格和“Gender”一词连接或组合起来。

=Fields!FirstName.Value & " " & Fields!LastName.Value
& " Gender = " & Fields!Gender.Value
Concatenation Operators Expression

当您在字符串列或文本上使用 + 运算符时,它表现得像 & 并执行字符串连接。以下代码返回全名。

=Fields!FirstName.Value + " " + Fields!LastName.Value

如果您在数字列上使用 + 运算符,它会相加它们。

=Fields!Income.Value + (Fields!Income.Value * 5 / 100)

单击预览选项卡以查看比较运算符报表的结果。

SSRS Concatenation Operators report preview

SSRS 逻辑/按位运算符

以下是在 SSRS 报表服务中可用的逻辑和按位运算符列表。

  1. And 对于布尔表达式:它执行逻辑析取和数字表达式的按位析取。
  2. Not 对于布尔表达式:它执行逻辑否定和数字表达式的按位否定。
  3. Or 对于布尔表达式:它执行逻辑析取和数字表达式的按位析取。
  4. Xor 对于布尔表达式:它执行逻辑排除和数字表达式的按位排除。
  5. AndAlso:执行短路逻辑析取。
  6. OrElse:执行短路逻辑析取。

对于此 SSRS 逻辑和按位运算符示例,我将在“Sales”列的右侧添加七个新列。接下来,右键单击“And”标题下方的文本框,然后选择“Expression”。为了理解报表,我建议您参考 SSRS 中有关图表、表、分组和格式化表文章。

它会打开以下表达式窗口以执行逻辑运算。以下表达式检查收入是否大于 100000 且订单值是否小于或等于 2。如果为 True,则打印 Good;否则,返回 Average。

=IIf((Fields!Income.Value > 100000) And
(Fields!Orders.Value <= 2), "Good", "Average")
Logical and Bitwise Operators Expression

如果您不使用 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 Logical and Bitwise Operators Report Preview

SSRS 位移运算符

以下是在报表服务中可用的位移运算符列表。

  • << 对位模式执行算术左移。Fields!Counter.Value << 2。
  • >> 对位模式执行算术右移。Fields!Counter.Value >> 2。

对于 SSRS 逻辑和按位运算符示例,我将在“Sales”列的右侧添加四列(左移两列,右移两列)。接下来,右键单击“And”标题下方的文本框,然后选择“Expression”。为了理解报表,我建议您参考 SSRS 中有关图表、表、分组和格式化表文章。

它会打开以下表达式窗口以执行位移运算。以下表达式将订单列中的 8 位或 16 位数字向左移动两个位置。

=(Fields!Orders.Value) << 2
BIt Shift expression

向右移动两个位置。

=(Fields!Orders.Value) >> 2

将订单值的位值向左和向右移动四个位置。

=(Fields!Orders.Value) << 4
=(Fields!Orders.Value) >> 4

单击预览选项卡以查看左移和右移位运算符报表的结果。

SSRS left and right Bit Shift Operators report preview