我正在使用报告生成器和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。
答案 0 :(得分:2)
因此,没有一种快速简便的功能可以完全满足您的要求,但是在SSRS中,有一种方法可以使用LEN
和REPLACE
来实现。因此,为了进行测试,我制作了一个简单的数据集,其中只有两个字段,每个字段一个值。第一个是一串随机字母,第二个使用您的例句。
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) +"]"
, ""
))
注意: