【发布时间】:2019-06-28 13:08:17
【问题描述】:
在 SSIS 中,我使用派生列来解析列输出之一。 我需要为此编写表达式。 例如,一些输出是
- https://jbl.abcd.com:66/ABCD//Book_Products/11186-2/Whse/1
- https://jbl.abcd.com:66/ABCD//Book_Products/11184-4/Whse/1
- https://jbl.abcd.com:66/ABCD//Book_Products/11164-2/Whse/2
我的输出应该是 11186-2 , 11184-5,11164-2 所以基本上我需要解析 Book_Products/11184-4/Whse
之间的这个值我写了表达式
SUBSTRING([@uri],FINDSTRING("Book_Products/",[@uri],1) + LEN("Book_Products/"),FINDSTRING("/Whse",[@uri],1) - FINDSTRING("Book_Products/",[@uri],1) - LEN("Book_Products/"))
但它的给予
System.ArgumentException:值不在预期范围内。
【问题讨论】:
-
@uri 是数据流中的列还是变量?
-
在这种情况下,我发现识别令牌很有帮助 - 在这种情况下为
/。在您的数据流中添加多个派生列表达式(如果这实际上是一个变量,则添加多个变量)以识别标记的位置。看来您正在寻找第六个和第七个标记之间的文本,所以我会有列/变量告诉我第六个标记的位置。第二个使用第六个的位置,得出第七个,然后最后,另一列将该 url 从第六个分隔符分割到第七个分隔符。如果它坏了,我可以调试哪一块是错的 -
@uri 是一列
标签: sql-server ssis expression etl