【问题标题】:Expression to look up certain character and store it in SSIS variable查找特定字符并将其存储在 SSIS 变量中的表达式
【发布时间】:2014-04-21 12:03:07
【问题描述】:

在 SSIS 2008 中,我有一个名为 @[User::EANcode] 的变量,它包含一个带有产品 eancode 的字符串,例如 '1234567891123'。该值通过 foreach 循环从像'1234567891123.jpg' 这样的文件名派生而来。

但是,有时文件名在末尾包含额外的“_1”、“_2”等,例如“1234567891123_1.jpg”,从而导致 EANcode 变量中的值“1234567891123_1”。

当同一个 EANcode(产品)有多个图像时,就会发生这种情况。 _N 加法始终是一个数字,并且始终位于名称/字符串的末尾。

用什么表达式来查找/解析“_1”(或_2 或_N 等)以便您可以将其存储在另一个名为@[User::Addition] 的变量中?

如果没有添加,则变量保持为空,这很好。

我需要将此 _N 添加到一个单独的变量中的原因是我稍后需要它来重命名文件名,但将添加的内容粘贴到最后。

谢谢!

【问题讨论】:

    标签: tsql variables ssis expression


    【解决方案1】:

    我认为您正在寻找 CHARINDEX()SUBSTRING()。这样,您可以将 _# 拆分为像这样的另一个变量(复制/粘贴并执行以查看。玩 @temp1 变量以查看代码的限制):

    declare @temp1 varchar(20), @temp2 varchar(20)
    set @temp1 = '1234567891123_12'
    
    IF CHARINDEX('_', @temp1) > 1
    set @temp2 = SUBSTRING(@temp1,CHARINDEX('_', @temp1),LEN(@temp1)-CHARINDEX('_',@temp1)+1)
    
    select @temp1, @temp2
    

    希望对你有帮助!

    【讨论】:

    • 谢谢,子字符串让我想到在单独的变量中使用它。加法部分的代码其实很简单:SUBSTRING(@[User::EANcode],14,3)
    • @J3FFK - 不错!我不确定它是在_ 之前还是之后是可变长度数字,所以我在回答中考虑了这一点。 :) 如果长度不变,Substring(@user,14,3) 肯定更容易!
    猜你喜欢
    • 1970-01-01
    • 2018-07-01
    • 1970-01-01
    • 2012-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多