SSIS如何获得通过分隔字符串的一部分(SSIS How to get part of a stri

2019-06-25 07:00发布

我需要一个SSIS表达式来获得分离器之前的字符串的左侧部分,然后把新的字符串中的新列。 我在派生列检查,似乎没有这样的表现。 Substring只能返回固定长度的字符串的一部分。

例如,分隔符字符串-

Art-Reading                Should return Art
Art-Writing                Should return Art
Science-chemistry          Should return Science

PS我知道这可能在MySQL来完成与SUBSTRING_INDEX()但我在SQL Server中寻找SSIS等效的,或至少

Answer 1:

当然可以:

只是配置你这样的派生列:

这里是让您的生活更轻松的表情:

SUBSTRING(name,1,FINDSTRING(name,"-",1) - 1)

仅供参考,第二个“1”是指以获取字符串中第一次出现“ - ”

编辑:表达式处理不字符串“ - ”

FINDSTRING(name,"-",1) != 0 ? (SUBSTRING(name,1,FINDSTRING(name,"-",1) - 1)) : name


Answer 2:

迟到总比不到好,但我想这样做太,发现这一点。

TOKEN(character_expression, delimiter_string, occurrence)

TOKEN("a little white dog"," ",2)

返回小源是下面

http://technet.microsoft.com/en-us/library/hh213216.aspx



Answer 3:

您可以指定长度的复制SUBSTRING功能,并检查使用短划线的位置CHARINDEX

SELECT SUBSTRING(@sString, 1, CHARINDEX('-',@sString) - 1)

对于SSIS表达式是几乎相同的代码:

SUBSTRING(@[User::String], 1, FINDSTRING(@[User::String], "-", 1)-1)


Answer 4:

如果SUBSTRING长度PARAM返回-1然后它导致错误,“长度-1是无效的功能‘SUBSTRING’,长度参数不能为负。长度参数更改为零或正值。”



文章来源: SSIS How to get part of a string by separator