我是SSRS
和表达的新手,所以请耐心等待。
我希望能够在字符串文本中提取和捕获某些数据,例如:
我只想在表' 之前和之后' 或'之前捕获任何内容。从
这是我到目前为止所拥有的,
=MID(Fields!Table.Value,InStr(Fields!Table.Value,"Yellow-")
,LEN(TRIM(Fields!Table.Value))-InStr(Fields!Table.Value,"' to",)-6)
当我运行它时,它将返回黄色 - 蓝色 - 红色'来自' abc abc - [abc] xxx ...
如何在'之后取下任何东西?来自或'至? '中的字符或'来自并不总是相同而且并不总是相同的#字符,一行可以少一行另外一行可以更多。唯一相同/重复的是
**增加了表
删除表**
非常感谢那里的任何帮助。
JT
答案 0 :(得分:0)
有两种类似的选择:
我会将字符串的'from'和'to'部分替换为单个标识符字符串然后查找。 我目前无法检查这一点,但基本上你需要用
替换对Fields!Table.Value
的任何引用
Replace(Replace(Fields!Table.Value," to ","#findme#")," from ","#findme#")
此外,您需要查找'Table'的出现,而不是'Yellow'并相应地调整表达式,必须调整MID表达式的起始位置,以将字符串'Table'的长度变为帐户。
这些表达式可能会让人感到麻烦,所以我常常采用另一种方法,如下所示。
选项2: 完成数据集中的部分或全部工作,这将使报告更易于理解。除了您在数据集中创建一个新列并修改SQL以提取表列的正确部分之外,该过程将类似。
像这样的东西
SELECT
myTableColumn
[my other columns]....,
, SUBSTRING(myTableColumn
, CHARINDEX('table ', myTableColumn) + 6
, CHARINDEX(' #findme# ',REPLACE(REPLACE(myTableColumn, ' from ', ' #findme# '), ' to ', ' #findme# '))
- CHARINDEX('table ', myTableColumn) - 6) as myResult
FROM myTable