2009-01-19 5 views
0

Je suis en train de retirer une partie d'une chaîne d'une autre chaîne, par exemple:tests expressions de transformation SSIS en studio de gestion et la création d'une expression

declare @url varchar (20) 
set @url = 'www.test.com~~34235645463544563554' 

select @url, substring(@url,1,CHARINDEX('~~',@url)-1) 

Je suis en train de supprimer « ~~ 34235645463544563554 »

Je suis habitué à utiliser les fonctions intégrées de tsql (comme montré ci-dessus) pour le faire, mais en essayant de faire la même chose dans une étape dans ssis qu'une "transformation de colonne dérivée". Quelqu'un peut-il suggérer comment je peux faire ceci et s'il y a un moyen facile de le tester rapidement dans le studio de gestion? c'est-à-dire utiliser l'expression écrite dans ssis pour tester le résultat attendu. Je préférerais ne pas courir le tout car c'est un gros paquet.

Répondre

1

En fin de compte j'ai utilisé un composant de script:

Dim debugOn As Boolean 
debugOn = False 
If debugOn Then MsgBox(Row.trackingCode) 
If Row.trackingCode <> "" Then 
    ' find the delimiter location 
    Dim endLocation As Integer 
    If debugOn Then MsgBox("index of ~~ is " & Row.trackingCode.ToString().IndexOf("~~", 0)) 
    ' chk if we have ~~ in field, if not in field then -1 is returned 
    If Row.trackingCode.ToString().IndexOf("~~", 0) > -1 Then 
     ' if ~~ at the beginning ie no tracking code 
     If Row.trackingCode.ToString().IndexOf("~~", 0) = 1 Then 
      endLocation = Row.trackingCode.ToString().IndexOf("~~", 0) 
     ElseIf Row.trackingCode.ToString().IndexOf("~~", 0) > 1 Then 
      endLocation = Row.trackingCode.ToString().IndexOf("~~", 0) - 1 
     End If 
     If debugOn Then MsgBox("end of track code is " & endLocation) 
     Row.trackingCode = Row.trackingCode.Substring(1, endLocation) 
    End If 
End If 
Questions connexes