我需要一个SSIS表达式来获得分离器之前的字符串的左侧部分,然后把新的字符串中的新列。 我在派生列检查,似乎没有这样的表现。 Substring
只能返回固定长度的字符串的一部分。
例如,分隔符字符串-
Art-Reading Should return Art
Art-Writing Should return Art
Science-chemistry Should return Science
PS我知道这可能在MySQL来完成与SUBSTRING_INDEX()
但我在SQL Server中寻找SSIS等效的,或至少
当然可以:
只是配置你这样的派生列:
这里是让您的生活更轻松的表情:
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长度PARAM返回-1然后它导致错误,“长度-1是无效的功能‘SUBSTRING’,长度参数不能为负。长度参数更改为零或正值。”