如何在SSIS中删除设置的字符串模式?

时间:2009-01-16 17:58:32

标签: sql-server string ssis

我希望修改一个字符串。在ssis中,我有一个步骤是“Derived column transformation editior”。我有一个字符串,如:

edit=style?form=exy?test=x~~StringIWantToRemove

我希望删除“~~ StringIWantToRemove” “~~”是分隔符 “StringIWantToRemove”是一个随机字符串og任何值(除了分隔符)

我会尝试找到~~然后是字符串len的索引然后从该点删除但不确定如何在ssis中执行。

帮助?

2 个答案:

答案 0 :(得分:1)

我会考虑使用带有正则表达式的脚本任务 - 这可能比尝试将其提炼为派生列任务中的单行更容易。

答案 1 :(得分:0)

最后我使用了一个脚本组件:

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