这个ssis数据流转换是否正确?

时间:2009-01-19 15:59:10

标签: sql-server ssis

我正在尝试将子字符串trackingCode提取到分隔符~~的点。 例如:

  

www.test.com ~~ 34235645463544563554

我想回来:

  

www.test.com

我正在使用:

SUBSTRING(trackingCode,1,FINDSTRING(trackingCode,"~~",1) - 1)

但是它没有用,我收到了一个错误:

错误:从文件导入aw的0xC0049067,派生列[1562]:评估函数时发生错误。

任何想法?如果我用数字替换FINDSTRING,那么它可以工作。

3 个答案:

答案 0 :(得分:2)

您的数据可能不符合您的期望。

信任但验证。

我会避免对任何事情进行派生列转换,但对数据进行简单的转换,您知道(通过直接测试)将始终符合预期。这些公式很难在派生列xforms中以单行格式读取,并且您几乎无法控制并且能够尝试不同的解析选项和很少的故障/恢复模式。

我会为此推荐一个脚本任务。您可以路由不符合不同路径的行,并使用数据查看器查看它们发生了什么。

答案 1 :(得分:1)

这应该有效:

SUBSTRING([trackingCode],1,(FINDSTRING([trackingCode],"\~~",1) - 1))

答案 2 :(得分:0)

您确定每一行都有一个尾随数字吗?如果没有,这样的事情可能有所帮助:

SUBSTRING(trackingCode+"~~",1,FINDSTRING(trackingCode,"~~",1) - 1)