【问题标题】:How can I display a row with a certain value in its string selected?如何在选定的字符串中显示具有特定值的行?
【发布时间】:2015-11-20 15:33:00
【问题描述】:

我在 SSRS 中工作,我试图弄清楚如果从多选参数中选择了字符串中的某个值,如何显示一行。假设我们有一张这样的表:

ID    Animals
-------------
 1    Cat, dog, bird
 2    Dog
 3    Dog, pig, Cat

每当我在参数中选择 dog 时,都应显示所有 3 行。如果我要选择猫,应该只显示 2 行。我之前使用过 InStr 函数来显示或隐藏列,但我不确定如何使用它来选择行。我试过InStr(Fields!Animals.Value,"Dog"),但它只带来了那一行。

任何建议或意见将不胜感激!

【问题讨论】:

  • 您遇到的困难是在单个列中存储多个值的结果,以及为什么应该避免这种情况。如果您将 LIKE 子句与通配符一起使用,您会找到您的数据,但如果您有多个记录,性能会很慢。这是一个糟糕的设计。
  • 好吧,我一开始就拆分了函数,但有人问他们是否选择了某个值来拉回用它标记的附加值。拆分后,只有狗会显示而不是全部显示。

标签: sql reporting-services ssrs-2008-r2


【解决方案1】:

您可以使用 LIKE 并在单词的两侧使用 % 来表示您想在字符串中的任何位置找到“Dog”。

SELECT ID, Animals
FROM your_table
WHERE animals LIKE '%Dog%'

【讨论】:

  • 假设Dog 不是其他东西的子字符串
【解决方案2】:

试试:

InStr(LCase(Fields!Animals.Value),"dog")

由于在 SSRS 中 Dogdog 不一样,你必须小写你的字段。

如果您的 Animals 字段返回一个包含多个动物名称的字符串,这将起作用。

在这种情况下:

LCASE("Dog, pig, Cat") 将返回 "dog, pig, cat" 你必须确保你要在字段中搜索的字符串也是小写的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-24
    • 2020-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多