【问题标题】:How to parse the string using expression in derived colum in SSIS如何使用 SSIS 派生列中的表达式解析字符串
【发布时间】:2019-06-28 13:08:17
【问题描述】:

在 SSIS 中,我使用派生列来解析列输出之一。 我需要为此编写表达式。 例如,一些输出是

我的输出应该是 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


【解决方案1】:

问题已解决

SUBSTRING([@uri],
FINDSTRING([@uri],"Book_Products/",1) + LEN("Book_Products/"),
FINDSTRING([@uri],"/Whse",1) - FINDSTRING([@uri],"Book_Products/",1) - LEN("Book_Products/"))

我用表达式编辑器调试了表达式,非常有用

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多