【发布时间】:2015-12-21 18:08:45
【问题描述】:
我有一个源列 KEY2,我需要在 SSIS 的派生列转换中对其执行一些字符串操作。配置如下
KEY2
Replace 'KEY2'
(FINDSTRING(KEY,",",1) - 2) > 0 ?
SUBSTRING(KEY,FINDSTRING(KEY,",",1) + 2,LEN(KEY) - FINDSTRING(KEY,",",1) - 1) : ""
string [DT_STR]
1
1252 (ANSI - Latin I)
长度是1。我需要改成100。我试过这个:
(DT_STR,100)(FINDSTRING(KEY,",",1) - 2) > 0 ?
SUBSTRING(KEY,FINDSTRING(KEY,",",1) + 2,LEN(KEY) - FINDSTRING(KEY,",",1) - 1) : ""
但是,系统提示我解析错误。有什么问题?
更新
我已关注 markTheLiars 的回答。表达式现在看起来像这样:
KEY2 Replace 'KEY2' (DT_STR,100,1252)((FINDSTRING(KEY,",",1) - 2) > 0 ?
SUBSTRING(KEY,FINDSTRING(KEY,",",1) + 2,LEN(KEY) - FINDSTRING(KEY,",",1) - 1) : "") string [DT_STR] 1 1252 (ANSI - Latin I)
表达式编译并运行,但是我提示相同的错误,因为即使有强制转换,长度也不会改变。
【问题讨论】:
-
我认为 cast 缺少参数。试试
(DT_STR,100, 1252) -
@mikeTheLiar,我已经尝试过你的建议。这次的错误是:数据类型DT_WSTR和DT_I4不兼容二元运算符“>”。
-
然后你会想要将整个语句包装在一个组中(它在第一个元素上执行强制转换,然后执行比较,当你想要它时,相反
-
@mikeTheLiar,我认为这就是我正在做的事情。我该如何选组?谢谢。
-
如果您在第一次比较之前查看您缺少
(的语句。正在转换(FINDSTRING(KEY,",",1) - 2)语句而不是结果。只需在()中的演员表之后将整个内容包装起来。第二个问题归结为不匹配的括号
标签: ssis