SSIS子串使用长度公式

时间:2016-07-14 12:55:59

标签: sql-server ssis bids derived-column

尝试在BIDS 2008中设置SSIS派生列。我有一个单列输入[Column 0],其中包含一个以管道分隔的字符串。我需要一个公式来提取其中一个"字段"从输入列,但长度是可变的。这是我现有的公式:

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

当我输入该公式时,它变为红色并表示长度参数无效。尝试通过查找分隔符的下一次迭代的位置,然后从分隔符的当前迭代的位置减去来确定数据的长度。

当我用静态数字替换公式的长度部分时,错误就会消失。

有人可以帮我纠正上面的公式吗?谢谢!

2 个答案:

答案 0 :(得分:0)

使用SSIS提供的var numrows = 5, numcols = 4; var arr = new Int8Array(numrows * numcols).fill(0); arr[3 + 1 * numrows] = 1; // col = 3, row = 1 console.log (arr);功能拆分TOKEN并找到"字段"你想要的。

  

TOKEN(SSIS表达)

     

根据指定的分隔符返回字符串中的标记(子字符串),分隔符用于分隔字符串中的标记,以及表示要返回的标记的标记编号。

|

答案 1 :(得分:0)

发现问题!!我的平面文件数据源上的输出列设置为宽度5000.我将宽度调整为4000并关闭然后重新打开项目。由于元数据的更改,它向我显示了平面文件中的错误。当我重新保存文件然后重新输入上面的公式时,所有都按预期工作。

谢谢大家!