SSRS 从第二个字符串之前的字符串中提取子字符串
SSRS Extract substring from string before the second string
我有一个类似于以下 4444-4444-TestingItem1 的字段。
我是否可以提取 4444-4444 之前的字段。
如果是这样我该怎么做?我将在 SSRS 中使用什么功能。
请注意第一个破折号之前和第二个破折号之前可以是任意数量的字符。
如何在 SSRS 中实现这一点?
您可以结合使用 CHARINDEX
和 SUBSTRING
:
SELECT SUBSTRING(field, 1, CHARINDEX('-', field, CHARINDEX('-', field)+1) - 1)
FROM yourTable
在 SSRS 中,您可以使用 LEFT
和 InStrRev
函数:
=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)
我有一个类似于以下 4444-4444-TestingItem1 的字段。 我是否可以提取 4444-4444 之前的字段。 如果是这样我该怎么做?我将在 SSRS 中使用什么功能。 请注意第一个破折号之前和第二个破折号之前可以是任意数量的字符。
如何在 SSRS 中实现这一点?
您可以结合使用 CHARINDEX
和 SUBSTRING
:
SELECT SUBSTRING(field, 1, CHARINDEX('-', field, CHARINDEX('-', field)+1) - 1)
FROM yourTable
在 SSRS 中,您可以使用 LEFT
和 InStrRev
函数:
=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)