SSIS如何使用派生列通过分隔符获取字符串的一部分

时间:2013-09-18 15:11:15

标签: ssis

我尝试编写一个SSIS表达式,以便在分隔符之前获取字符串的正确部分,然后将新字符串放入新列中。我在派生列中使用了Substring和Findstring,但是我遇到了麻烦。

Company
Virgin Altantic - F30008 
Google - F38115

我需要检索F30008和F38115。

我使用了表达式:

(DT_STR,65,1252)(FINDSTRING(Company,"- ",1) != 0 ? (SUBSTRING(Company,1,FINDSTRING(Company,"-",1) + 2)) : Company)

从这个表达式我得到了:

Company
Virgin Altantic - 
Google - 

3 个答案:

答案 0 :(得分:5)

数据:

|                    COMPANY |
|----------------------------|
|   Virgin Altantic - F30008 |
|            Google - F38115 |
| Google youtube - F38115169 |

派生列代码:

<强> NewColumn1

SUBSTRING(Company,1,LEN(Company) - FINDSTRING(REVERSE(Company),"-",1) - 1)

<强> NewColumn2

SUBSTRING(Company,LEN(Company) - FINDSTRING(REVERSE(Company),"-",1) + 3,FINDSTRING(REVERSE(Company),"-",1) - 2)

结果:

enter image description here

答案 1 :(得分:2)

您遇到的问题是您想要字符串的结尾,而您当前的代码会为您提供字符串的开头。

SUBSTRING的文档指定了3个参数:表达式,起始位置和长度。 FINDSTRING正在返回分隔符的位置。您正在做的是将起始位置指定为1,即列中的第一个字符。

相反,将分隔符的位置加上2个空格来考虑分隔符本身和空间。长度将是LEN([Company]) - FINDSTRING([Company],"- ",1)

在所有版本的SSIS中,我们还有RIGHT这是您也可以使用的SUBSTRING的专用版本。

答案 2 :(得分:2)

只需将SSIS TOKEN与“ - ”分隔符一起使用,然后使用TRIM