2016-12-01 29 views
3

次のようなフィールドがあります。4444-4444-TestingItem1。 4444-4444までフィールドを抽出することは可能ですか? もしそうなら、どうすればいいですか? SSRS内でどのような機能を使用しますか。 ご注意最初のダッシュの前と2番目のダッシュの前に任意の数の文字を入れることができます。SSRS 2番目の文字列の前に文字列の部分文字列を抽出します。

これはどのようにSSRS内で達成できますか?このことができますなら、私を知ってみましょう

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

:あなたはLEFTInStrRev機能を使用することができますSSRSで

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

答えて

1

ティムとアレハンドロに従ってください両方ともあなたの例でうまくいく良い答えを与えます。これは、SQLではなくSSRS式としての2つの組み合わせであり、2つ以上のダッシュを含む文字列を処理します。

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

あなたはこのCHARINDEXSUBSTRINGの組み合わせを使用して行うことができます。

2

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 
関連する問題