2009-01-19 40 views
0

我想从另一个字符串中删除字符串的一部分,例如:测试SSIS转换表达式管理工作室,创造一个表达

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

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

我试图消除“~~ 34235645463544563554”

我使用内置的tsql函数(如上所示)来做到这一点,但试图在ssis的一个步骤中做一个“派生列转换”一样的事情。有人可以建议我如何做到这一点,并且是否有一种简单的方法可以在管理工作室中快速测试出来?即用ssis中的表达式来测试预期的结果。我不想运行整个事情,因为它是一个大包。

回答

1

在我使用的脚本组件末尾:

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