3

我试图编写一个 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 - 
4

3 回答 3

5

数据:

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

派生列代码:

新列1

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

新列2

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

结果:

在此处输入图像描述

于 2013-09-19T17:25:38.473 回答
3

Just use SSIS TOKEN with "-" delimiter and then use TRIM

于 2015-03-28T11:31:25.117 回答
2

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

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

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

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

于 2013-09-18T15:42:17.727 回答