Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何在SSIS中使用派生列中的表达式解析字符串_Sql Server_Ssis_Expression_Etl - Fatal编程技术网

Sql server 如何在SSIS中使用派生列中的表达式解析字符串

Sql server 如何在SSIS中使用派生列中的表达式解析字符串,sql-server,ssis,expression,etl,Sql Server,Ssis,Expression,Etl,在SSIS中,我使用一个派生列来解析其中一个列输出。 我需要写下这个表达式。 例如,一些输出是 这里我的输出应该是11186-21184-511164-2 所以基本上我需要解析这个值,它在图书产品之间/11184-4/Whse 我写了这句话 SUBSTRING([@uri],FINDSTRING("Book_Products/",[@uri],1) + LEN("Book_Products/"),FINDSTRING("/Whse",[@uri],1) - FINDSTRING("Bo

在SSIS中,我使用一个派生列来解析其中一个列输出。 我需要写下这个表达式。 例如,一些输出是

这里我的输出应该是11186-21184-511164-2 所以基本上我需要解析这个值,它在图书产品之间/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:值不在预期范围内

问题解决了

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

我使用expression editor调试表达式,它非常有用。

uri是数据流中的一列还是一个变量?在这种情况下,我发现识别标记很有用-在本例中为
/
。在数据流中添加多个派生列表达式(如果这实际上是一个变量,则添加多个变量)以标识标记的位置。看起来您正在寻找第六个和第七个标记之间的文本,所以我会有列/变量告诉我第六个标记的位置。第二个使用第六个的位置来派生第七个,最后是另一列,该列将url从第六个分隔符切片到第七个分隔符。如果在它断开时,我可以调试它是什么wrong@uri这是一个专栏