在 2 个单词之间拆分 ssrs 表达式

split ssrs expression between 2 words

我需要将结果拆分为 3 个单独的表达式,使用 sql server 2008。

我目前得到的结果是例如。 "person: man tel: yes rel: christian msg: misc text"

我需要将其拆分为:

"Person: man" "Tel: yes" "Rel: Christian" "Msg: misc text"

我一直在使用 iif 语句 return 在 "tel" 之前的位,但无法仅在 tel 和 rel 等之间将其变为 return 。冒号之前的部分将保留static 无论结果是 returned 在我的数据集中,但在进入下一节之前,冒号之后的部分可以是任何东西(也可以是任何长度)。有人可以帮忙吗? 论坛上其他类似的问题对第一个表达式有帮助,但后面的有点难。

这可以在 SQL 而不是 SSRS 中很容易地实现。 我强烈建议在 SQL 中完成此操作。 您可以使用 CHARINDEX 函数将字符串拆分为 4 个单独的列(person、tel、Rel、Message)

这可以在 SSRS 中以与使用 SQL 几乎相同的方式实现 - 使用 INSTR(SQL 服务器中的 CHARINDEX)和 MID(SQL 中的 SUBSTRING)查找位置并解析字符串。在您使用 space 作为分隔符并且您的数据中包含 spaces ("Msg: misc text") 时存在一个问题。

首先,我会在数据集中创建一个计算列,以将您的space分隔符更改为另一个字符以使其成为更容易找到 space 中断。我通常使用管道 ( | ),因为它很少使用。

=REPLACE(REPLACE(REPLACE(FIELDS!YourFIELD!.VALUE, ": ", "`"), " ", "|"), "`", ": ")

第 1 列: =MID(第一(字段!txt2.Value, "DISPUTES"), 1, INSTR(字段!txt2.Value, "|") - 1)

第 2 列: =MID(MID(Fields!txt2.Value, INSTR(Fields!txt2.Value, "|") + 1, LEN(Fields!txt2.Value)), 1, INSTR(MID(Fields! txt2.Value, INSTR(字段!txt2.Value, "|") + 1, LEN(字段!txt2.Value)), "|") - 1)

第 3 列和第 4 列类似 - 尽管稍微复杂一些。

对于 SQL 方法,这适用于我所做的测试:

SELECT LEFT(txt, CHARINDEX('tel:',txt)-2) AS part1,
    SUBSTRING(txt, CHARINDEX('tel:',txt), CHARINDEX('rel:',txt)-CHARINDEX('tel:',txt)) AS part2,
    SUBSTRING(txt, CHARINDEX('rel:',txt), CHARINDEX('msg:',txt)-CHARINDEX('rel:',txt)) AS part3,
    RIGHT(txt, LEN(txt)-CHARINDEX('msg:',txt)+1) AS part4
FROM (
    SELECT 'person: man tel: yes rel: christian msg: misc text' AS txt
) AS t