SSRS 从第二个字符串之前的字符串中提取子字符串

SSRS Extract substring from string before the second string

我有一个类似于以下 4444-4444-TestingItem1 的字段。 我是否可以提取 4444-4444 之前的字段。 如果是这样我该怎么做?我将在 SSRS 中使用什么功能。 请注意第一个破折号之前和第二个破折号之前可以是任意数量的字符。

如何在 SSRS 中实现这一点?

您可以结合使用 CHARINDEXSUBSTRING:

SELECT SUBSTRING(field, 1, CHARINDEX('-', field, CHARINDEX('-', field)+1) - 1)
FROM yourTable

在 SSRS 中,您可以使用 LEFTInStrRev 函数:

=LEFT(Fields!YourField.Value,InStrRev(Fields!YourField.Value,"-")-1)

如果有帮助请告诉我。

pat1 : 查找 char 的第一个位置是非数字或“-”

pat2 : 找到“-”的第一个位置并跟随非数字

    SELECT a.s,LEFT(a.s,PATINDEX('%[^0-9-]%',a.s)-1) AS pat1
              ,LEFT(a.s,PATINDEX('%[-][^0-9]%',a.s)-1)  AS pat2
    FROM (VALUES('4444-4444-TestingItem1')) a(s)
s                      pat1                   pat2
---------------------- ---------------------- ----------------------
4444-4444-TestingItem1 4444-4444-             4444-4444

Tim 和 Alejandro 都给出了与您的示例相符的很好的答案。这是两者的组合,作为 SSRS 表达式而不是 SQL,并处理具有两个以上破折号的字符串。

=LEFT(Fields!FIELD.Value, InStr(InStr(Fields!FIELD.Value, "-") +1, Fields!FIELD.Value, "-") -1)