Reporting services 修剪然后添加文本

Reporting services 修剪然后添加文本,reporting-services,Reporting Services,我的查询中有一个输出,可以提供: XXXXXXXXXXXXXXXX:123456(xx)-XXXXXXXXXX 或 XXXXXXXXXXXXXXXX:12345678(xx)-XXXXXXXXXX 基本上是在6位或8位数字之前输入文本,然后在后面输入文本 我在SSRS中的一个表中创建了一列,只显示数字,我使用了以下表达式: =Mid(字段!my.Value,InStr(字段!my.Value,“:”)+1,InStr(字段!my.Value,“:”)+3,字段!my.Value,“”)-InSt

我的查询中有一个输出,可以提供:

XXXXXXXXXXXXXXXX:123456(xx)-XXXXXXXXXX

XXXXXXXXXXXXXXXX:12345678(xx)-XXXXXXXXXX

基本上是在6位或8位数字之前输入文本,然后在后面输入文本

我在SSRS中的一个表中创建了一列,只显示数字,我使用了以下表达式:

=Mid(字段!my.Value,InStr(字段!my.Value,“:”)+1,InStr(字段!my.Value,“:”)+3,字段!my.Value,“”)-InStr(字段!my.Value,“:”)-1)
现在我的输出是123456或12345678。这很好

然而,我想做一件额外的事情。我想创建一个输出,如果数字是6个数字长返回伦敦,如果数字是8个数字长返回巴黎。这可能吗?我已经研究并尝试了:

=IIF(Len(Fields!my.Value,“:”)+1,InStr(Fields!my.Value,“:”)+3,Fields!my.Value,“”)-InStr(Fields!my.Value,“:”)-1))=8,“巴黎”,IIF(Len(Fields!my.Value,InStr(Fields!my.Value,“:”)+1,InStr(InStr(Fields!my.Value,“:”)+3,Fields!my.Value,“)”)-InStr(Fields!my.Value:”)-1))=6,“伦敦”,“错误号”)

但可悲的是,这只是给了我“错误的号码”,所以我很接近,但没有雪茄。我确信这个表达式只需要最后的调整,但不能完全达到目的。感谢您的帮助。

在我看来,您最好、最简单的解决方案是使用
报告项对实际文本框中的值使用
Len
函数。我还建议使用
TRIM
功能来删除任何可能会扭曲
Len
计数的意外空格。 与重复相同的表达式来隔离数字不同,您应该能够简化第二个表达式,如下所示

=IIF(Len(Trim(ReportItems!CodeTextbox.Value)) = 6, "London", 
     IIF(Len(Trim(ReportItems!CodeTextbox.Value)) = 8, "Paris", "Wrong Number")

在我看来,您最好且最简单的解决方案是使用
ReportItems对实际文本框中的值使用
Len
函数。我还建议使用
TRIM
功能来删除任何可能会扭曲
Len
计数的意外空格。 与重复相同的表达式来隔离数字不同,您应该能够简化第二个表达式,如下所示

=IIF(Len(Trim(ReportItems!CodeTextbox.Value)) = 6, "London", 
     IIF(Len(Trim(ReportItems!CodeTextbox.Value)) = 8, "Paris", "Wrong Number")

我倾向于在查询中作为一个case表达式来做这种事情。谢谢你回来。如果没有关于数字的所有文字,我会同意,但我不确定是否有可能出现这种情况。有关显示的文本量,请参见文章顶部。有很多。有没有可能把所有的文字都按大小写并删掉——只关注数字?数字为6或8位,需要挖出-根据上面的表达式。我几乎用这个表达式破解了它。在服务器端可能会更快。如果您发布了一些示例记录,其中包含您希望它的外观,我将在大约8小时内对Case表达式进行破解。非常感谢。输出基本上如上所述,如果有6位数字,则返回“伦敦”,如果有8位数字,则返回“巴黎”。正常输出(x=文本字符)为:xxxxxxxxxxxxxxxxxx:123456(xx)-xxxxxxx。。。或xxxxxxx xxxxxxxxx:12345678(xx)-xxxxxxx…我设法写出了一份案例陈述并将其整理好:当MyColumn像“%TEST[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]”时的案例,然后当MyColumn像“[^0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]时的案例是“巴黎”%然后“伦敦”或“未知”作为结果结束-感谢您提供的帮助,非常感谢我倾向于在查询中这样做作为一个案例表达。谢谢您回来。如果没有关于数字的所有文字,我会同意,但我不确定是否有可能出现这种情况。有关显示的文本量,请参见文章顶部。有很多。有没有可能把所有的文字都按大小写并删掉——只关注数字?数字为6或8位,需要挖出-根据上面的表达式。我几乎用这个表达式破解了它。在服务器端可能会更快。如果您发布了一些示例记录,其中包含您希望它的外观,我将在大约8小时内对Case表达式进行破解。非常感谢。输出基本上如上所述,如果有6位数字,则返回“伦敦”,如果有8位数字,则返回“巴黎”。正常输出(x=文本字符)为:xxxxxxxxxxxxxxxxxx:123456(xx)-xxxxxxx。。。或xxxxxxx xxxxxxxxx:12345678(xx)-xxxxxxx…我设法写出了一份案例陈述并将其整理好:当MyColumn像“%TEST[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]”时的案例,然后当MyColumn像“[^0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]时的案例是“巴黎”%“然后”伦敦“或”未知“结束了,谢谢你的帮助,非常感谢你回来。非常感谢。我设法想出了一个案例陈述来解决这个问题。但奇怪的是,当我试着用你的表情时,它被理解为“打错了电话”。谢谢你回来。非常感谢。我设法想出了一个案例陈述来解决这个问题。奇怪的是,当我试着用你的表达方式时,它被理解为“打错了电话”。