派生列条件以获取两个连字符之间的字符串

时间:2014-01-02 12:02:49

标签: sql-server ssis

我需要一个SSIS表达式来获取分隔符之前的字符串的左侧部分,然后将新字符串放入新列中。我检查了派生列,似乎没有这样的表达式。 “Substring”只能返回固定长度的字符串部分。例如,使用分隔符字符串' - ':

输入:MQ-240030-Black
预期产出:240030

我的尝试:

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

3 个答案:

答案 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"