我有一個類似於以下4444-4444-TestingItem1的字段。 我能否提取該字段直到4444-4444。 如果是的話我該怎麼做?我將在SSRS中使用什麼功能。 請注意它可以是第一個破折號之前和第二個破折號之前的任意數量的字符。SSRS從第二個字符串之前的字符串中提取子字符串
在SSRS中如何實現這一點?
我有一個類似於以下4444-4444-TestingItem1的字段。 我能否提取該字段直到4444-4444。 如果是的話我該怎麼做?我將在SSRS中使用什麼功能。 請注意它可以是第一個破折號之前和第二個破折號之前的任意數量的字符。SSRS從第二個字符串之前的字符串中提取子字符串
在SSRS中如何實現這一點?
蒂姆和Alejandro都給出了與你的例子一起工作的好答案。這是兩者的組合,作爲SSRS表達式而不是SQL,並處理具有兩個以上破折號的字符串。
=LEFT(Fields!FIELD.Value, InStr(InStr(Fields!FIELD.Value, "-") +1, Fields!FIELD.Value, "-") -1)
可以使用的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:查找字符的第一個位置的非數字或 「 - 」
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