计算SSRS

时间:2019-12-04 14:17:17

标签: reporting-services

我正在使用报告生成器和SSRS创建一个报告,该报告需要计算字符串中给定字符的数量。我一直在寻找一个可能没有用的函数。有没有办法做到这一点?


StringCount("The quick brown fox jumps over the lazy dog","o") 

此函数应在br o wn,f o x, o ver中的 o 返回4。和d o g。

2 个答案:

答案 0 :(得分:2)

因此,没有一种快速简便的功能可以完全满足您的要求,但是在SSRS中,有一种方法可以使用LENREPLACE来实现。因此,为了进行测试,我制作了一个简单的数据集,其中只有两个字段,每个字段一个值。第一个是一串随机字母,第二个使用您的例句。

SELECT 
   'AAABBBCCCWWWLLLaaaoooSSSEEEWWW', 
   'The quick brown fox jumps over the lazy dog' AS QuickFox

表达式将使用REPLACE将所需字符替换为字符串中的任何字符。然后,您可以从字符串的全长中减去该值以获得正确的计数。这也使用UCASE来捕获大小写的变化。

= LEN(Fields!QuickFox.Value) - LEN(REPLACE(UCASE(Fields!QuickFox.Value),"O",""))

要更全面地完成此操作,可以输入参数或字段并应用UCASE函数。这样可以使您准确地计算给定字符串中字母的所有可能实例。

= LEN(Fields!QuickFox.Value) - LEN(REPLACE(UCASE(Fields!QuickFox.Value), UCASE(Parameters!CharToSearch.Value),""))

答案 1 :(得分:0)

您可以将regex与LEN结合使用。

以下内容基于两个报告参数,一个是要搜索的字符串,另一个是要搜索的字符。您可能需要修改以适合您的目的,但原理是合理的。

=LEN(System.Text.RegularExpressions.Regex.Replace
(UCASE(Parameters!SearchThis.Value)
, "[^" + UCASE(Parameters!searchChar.Value) +"]"
, ""
))

注意:

  1. RegEx不是我的强项之一,因此可能会有更清洁的方法来实现此目的...
  2. 如果要区分大小写的搜索,请删除UCASE语句