SSIS如何通过分隔符获取字符串的一部分
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SSIS如何通过分隔符获取字符串的一部分相关的知识,希望对你有一定的参考价值。
我需要一个SSIS表达式来获取分隔符之前的字符串的左侧部分,然后将新字符串放在一个新列中。我检查了派生列,似乎没有这样的表达式。 Substring
只能返回固定长度的字符串部分。
例如,使用分隔符字符串-
:
Art-Reading Should return Art
Art-Writing Should return Art
Science-chemistry Should return Science
附:我知道这可以在mysql中使用SUBSTRING_INDEX()
完成,但我正在寻找SSIS中的等价物,或者至少在SQL Server中
答案
当然可以:
只需配置您的派生列,如下所示:
这是让您的生活更轻松的表达方式:
SUBSTRING(name,1,FINDSTRING(name,"-",1) - 1)
仅供参考,第二个“1”表示首次出现字符串“ - ”
编辑:表达式处理字符串没有“ - ”
FINDSTRING(name,"-",1) != 0 ? (SUBSTRING(name,1,FINDSTRING(name,"-",1) - 1)) : name
另一答案
迟到总比没有好,但我也想做到这一点并发现了这一点。
TOKEN(character_expression, delimiter_string, occurrence)
TOKEN("a little white dog"," ",2)
回报很少,源头在下面
http://technet.microsoft.com/en-us/library/hh213216.aspx
另一答案
您可以在SUBSTRING
函数中指定要复制的长度,并使用CHARINDEX
检查短划线的位置
SELECT SUBSTRING(@sString, 1, CHARINDEX('-',@sString) - 1)
对于SSIS表达式,它几乎是相同的代码:
SUBSTRING(@[User::String], 1, FINDSTRING(@[User::String], "-", 1)-1)
另一答案
如果SUBSTRING长度参数返回-1则会导致错误,“长度-1对函数”SUBSTRING无效。长度参数不能为负。将长度参数更改为零或正值。“
以上是关于SSIS如何通过分隔符获取字符串的一部分的主要内容,如果未能解决你的问题,请参考以下文章