2012-06-06 12 views
12

Ich brauche einen SSIS-Ausdruck, um den linken Teil einer Zeichenfolge vor dem Trennzeichen zu erhalten, und dann die neue Zeichenfolge in eine neue Spalte. Ich habe abgeleitete Spalte eingecheckt, es scheint keine solche Ausdrücke. "Substring" konnte nur String-Part mit fester Länge zurückgeben.SSIS So erhalten Sie einen Teil einer Zeichenfolge durch Trennzeichen

Zum Beispiel mit Trennzeichen '-':

Art-Reading    Should return Art 
Art-Writing    Should return Art 
Science-chemistry   Should return Science 

P. S. Ich wusste, dass dies mit SUBSTRING_INDEX in MySQL getan werden könnte(), aber ich bin für eine gleichwertige in SSIS suchen, oder zumindest in SQL Server

+0

mögliche Duplikate von [Hilfe mit SubString in SSIS] (http://stackoverflow.com/questions/5324590/help-with-substring-in-assis) – Echo

Antwort

24

natürlich:

enter image description here

nur abgeleiteten Spalten wie folgt konfiguriert werden:

enter image description here

Hier ist der Ausdruck, Ihr Leben leichter zu machen:

SUBSTRING(name,1,FINDSTRING(name,"-",1) - 1) 

FYI, die zweite "1" um das erste Vorkommen der Zeichenkette "-" zu erhalten

BEARBEITEN: Ausdruck mit String umgehen können, ohne „-“

FINDSTRING(name,"-",1) != 0 ? (SUBSTRING(name,1,FINDSTRING(name,"-",1) - 1)) : name 
+0

Vielen Dank für die Antwort !! Einige Werte der Spalte "Name" haben jedoch keinen Trenner, und in diesem Fall möchte ich, dass die Spalte "neuer_name" mit "name" identisch ist. Z.B. einer der Namen ist "Science", und der new_name wäre nur "Science". Der gesamte Prozess würde also so aussehen: Wenn Name einen Trenner hat, dann benutze die Lösung, andernfalls kopiere den Namen in den neuen Namen – Echo

+0

, der leicht mit einem bedingten Ausdruck gelöst werden kann. Siehe meine Bearbeitung! – Diego

7

Sie die Länge angeben können, für die in der SUBSTRING Funktion und überprüfen kopieren Lage des Armaturenbretts CHARINDEX

SELECT SUBSTRING(@sString, 1, CHARINDEX('-',@sString) - 1) 

Für den SSIS Ausdruck ist so ziemlich das gleiche Code verwendet: Sie können

SUBSTRING(@[User::String], 1, FINDSTRING(@[User::String], "-", 1)-1) 
+0

vielen Dank für diese Antwort ~! Ich wünschte, ich könnte zwei als akzeptiert auswählen ... – Echo

10

Besser spät als nie, aber ich wollte auch dies tun, und fanden diese.

TOKEN(character_expression, delimiter_string, occurrence) 

TOKEN("a little white dog"," ",2) 

kehrt wenig die Quelle unter

http://technet.microsoft.com/en-us/library/hh213216.aspx

+1

Dies ist wahrscheinlich die beste Antwort hier. – Cos

+0

Ich habe ewig danach gesucht !! Beste Antwort – SKh

0

wenn SUBSTRING Länge param -1 zurück, dann kommt es zu Fehlern, „Die Länge -1 nicht gültig ist für die Funktion "SUBSTRING". Der Längenparameter darf nicht negativ sein. Ändern Sie den Längenparameter auf Null oder einen positiven Wert. "

Verwandte Themen