2016-12-01 23 views
3

Ich habe ein Feld, das wie folgt 4444-4444-TestingItem1 ist. Kann ich das Feld bis 4444-4444 extrahieren? Wenn ja, wie würde ich das tun? Welche Funktion würde ich innerhalb von SSRS verwenden? Bitte beachten Es könnte eine beliebige Anzahl von Zeichen vor dem ersten Strich und vor dem zweiten Strich sein.SSRS Extract Teilstring von String vor dem zweiten String

Wie kann dies in SSRS erreicht werden?

Antwort

1

Tim und Alejandro folgen beide geben gute Antworten, die mit Ihrem Beispiel funktionieren. Dies ist eine Kombination der beiden als SSRS-Ausdruck anstelle von SQL und behandelt Strings mit mehr als zwei Bindestrichen.

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

Sie können dies tun, eine Kombination aus CHARINDEX und SUBSTRING mit:

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

In SSRS Sie LEFT und InStrRev Funktionen verwenden können:

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

Lassen Sie mich wissen, ob das hilft.

1

pat1: Findet das erste Position char nicht numerisch oder "-"

pat2: erste Position finden "-" und nicht-numerischen

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