2016-07-14 2 views
0

Versuchen, eine abgeleitete SSIS-Spalte in BIDS 2008 einzurichten. Ich habe eine einspaltige Eingabe [Spalte 0], die eine durch Leerzeichen getrennte Zeichenfolge enthält. Ich brauche eine Formel, um eines der "Felder" aus der Eingabespalte zu extrahieren, die Länge ist jedoch variabel. Hier ist die Formel I zur Zeit an der richtigen Stelle:SSIS-Substring Verwenden Sie Formel für Länge

SUBSTRING([Column 0],(FINDSTRING([Column 0], "|",10)+1),(FINDSTRING([Column 0], "|",11)-FINDSTRING([Column 0],"|",10)-1)) 

Als ich diese Formel eingeben, es rot wird und sagt der Längenparameter ist ungültig. Versuch, die Länge der Daten zu bestimmen, indem die Position der nächsten Iteration des Begrenzers gefunden und dann von der Position der aktuellen Iteration des Begrenzers subtrahiert wird.

Wenn ich den Längenabschnitt der Formel durch eine statische Zahl ersetze, verschwindet der Fehler.

Kann mir jemand helfen, die obige Formel zu korrigieren? Vielen Dank!

+0

** Diese Frage wurde durch ein Problem verursacht, das nicht mehr reproduziert werden kann ** oder ein einfacher Tippfehler. Während ähnliche Fragen hier zum Thema gehören könnten, wurde diese in einer Weise gelöst, die den zukünftigen Lesern wahrscheinlich nicht hilft. Dies kann oft vermieden werden, indem das kürzeste Programm identifiziert und genau untersucht wird, das zur Reproduktion des Problems vor der Veröffentlichung erforderlich ist. –

Antwort

0

Verwenden Sie die von SSIS zur Verfügung gestellte TOKEN-Funktion, um auf | zu teilen und das gewünschte "Feld" zu finden.

TOKEN (SSIS Expression)

Kosten Token (Teilzeichenfolge) aus einer Zeichenfolge auf den festgelegten Begrenzungszeichen aus, daß getrennte Tokens in der Zeichenfolge und die Anzahl der Token, die zurückgegeben werden Token bezeichnet .

TOKEN(character_expression, delimiter_string, occurrence) 
+0

Diese Lösung funktioniert leider nicht für mich. Ich verwende BIDS 2008 und die TOKEN-Funktion wurde erst in der Version 2012 implementiert. – LegalEagle

+0

In diesem Fall sollte das, was Sie tun, funktionieren, seien Sie vorsichtig, dass Sie Ihre Klammern balancieren etc. – StackOverflowGuest

+0

SOLLTE funktionieren, aber nicht. Es sagt mir, dass der Längenparameter ungültig ist. Ich habe die Formel ein Segment nach dem anderen erstellt und dann alles kopiert/eingefügt, also sollten alle Klammern da sein. Gibt es einen anderen Grund, warum Sie wissen, dass der Längenparameter ungültig wäre? – LegalEagle

0

GEFUNDEN DAS PROBLEM !! Die Ausgabespalte in meiner Flatfile-Datenquelle wurde auf eine Breite von 5000 festgelegt. Ich habe die Breite auf 4000 reduziert und dann das Projekt erneut geschlossen. Es zeigte mir einen Fehler in der flachen Datei aufgrund der Änderung der Metadaten. Wenn ich die Datei erneut speicherte und die obige Formel erneut eingab, funktionierte alles wie erwartet.

Danke allen!

Verwandte Themen