我需要一个SSIS表达式来获取分隔符之前的字符串的左侧部分,然后将新字符串放入新列中。我检查了派生列,似乎没有这样的表达式。 “Substring”只能返回固定长度的字符串部分。例如,使用分隔符字符串' - ':
输入:MQ-240030-Black
预期产出:240030
我的尝试:
SUBSTRING(name,1,FINDSTRING(name,"-",1) - 1)
答案 0 :(得分:0)
将表达式更改为
SUBSTRING(name,FINDSTRING(name,"-",1) + 1,FINDSTRING(name,"-",2) - FINDSTRING(name,"-",1) - 1)
<强> EDITED 强>
第一次出现连字符(name
)后的索引中的子串FINDSTRING(name,"-",1) + 1
到连字符第二次出现之前的索引(FINDSTRING(name,"-",2) - FINDSTRING(name,"-",1) - 1
)
再次编辑
将“BLACK”作为输出
第二次出现连字符(name
)到最后一个索引(FINDSTRING(name,"-",2) + 1
)后,索引中的子串LEN(name)
因此,它将是
UPPER(SUBSTRING(name,FINDSTRING(name,"-",2) + 1,LEN(name)))
我包含了UPPER()
,因为我在大写字母中看到了结果字符串。
答案 1 :(得分:0)
代码:
SUBSTRING(name,FINDSTRING(name,"-",1) + 1,FINDSTRING(name,"-",2) - FINDSTRING(name,"-",1) - 1)
结果:
name name2
MQ-240030-Black 240030
答案 2 :(得分:0)
您需要使用的是以下语法:
FINDSTRING(@[namespace::input], "-", 2) != 0 ?TOKEN( @[namespace::input], "-" , 2) : "ERR_INPUT"