SSIS派生列转换
我正在尝试开发一个包含字符串(格式为1.02.3.04或01.02.03.4以及许多其他排列)的包,并根据以下规则对其进行修改SSIS派生列转换,ssis,Ssis,我正在尝试开发一个包含字符串(格式为1.02.3.04或01.02.03.4以及许多其他排列)的包,并根据以下规则对其进行修改 如果第二个字符是“.”,则用0填充第一个组 FINDSTRING([mycolname],“,”,1)返回第一个“.”的位置。对于2的所有值,然后应用此规则并修改字符串,例如,如果1.2.3.4将返回2,则字符串应为01.2.3.4 如果“.”的第二个实例是5个FINDSTRING([mycolname],“”,2),则在第三个字符(例如01.02.3.4)后添加一个0
SSIS 2012中的任何帮助都可以通过一行衍生列实现:
RIGHT("00" + TOKEN("1.02.3.04",".",1),2) + "." + RIGHT("00" + TOKEN("1.02.3.04",".",2),2) + "." + RIGHT("00" + TOKEN("1.02.3.04",".",3),2) + "." + RIGHT("00" + TOKEN("1.02.3.04",".",4),2)
只是要明确一点,您是否按顺序应用每个规则?那么,首先检查第一条规则并更改字符串,然后检查第二条规则并更改字符串,然后是第三条规则?或者规则是针对原始字符串进行测试的?更一般地说,您只需要将所有字符串转换为0W.0X.0Y.Z形式,对吗?Kyle-我认为按顺序是回答第二部分的方法-我希望所有字符串的格式都是99.99.99.99,所有数字都在10以下,并有一个前导零。这样做的原因是为了实现一致的排序,因为目前数据没有可重复的结构。理想情况下,我希望将数据分解为四个独立的元素,并在稍后使用concat。分隔符,但这还有一点距离。您使用的是什么版本的SSI?Jayvee-这几乎是一个绝妙的解决方案。唯一的问题是此派生列的输出不包括。回到弦上。输出的格式为1.1.1.1到01010101-@JamesK-添加了点,请现在尝试。Jayvee-你是一个明星,它带来了乐趣。正如我所理解的,这个过程读取的字符串一直到第一个。然后添加前导零,但返回两个字符,然后在第二次出现的。并执行相同的字符串操作,然后在。etc@JamesK-是的,没错。Token将字符串拆分为“.”,我们可以选择任何ocurrence。我们选择了每一个,做了前导零位,然后将它们连接起来,再次在眼圈之间添加点。如果这对您有效,请将答案标记为已接受。谢谢