如何根据SQL / SSIS

时间:2015-05-17 11:26:24

标签: sql ssis

我们有一个名为DATA的表,其中包含一个列为varchar()的列。以下是该列中的值:

Raj0014
Dee0052ak
000Pawan
Rah454545ul

我们需要分隔int值和字符值,并插入到另一个名为DATA1的表中,该表有两列(id int,name varchar(50))。

结果应该是:

ID           Name
0014         Raj
0052         Deepak
000          Pawan
454545       Rahul

2 个答案:

答案 0 :(得分:1)

如果您不介意在SQL中执行此操作,您可以只选择该列两次,并使用一堆嵌套的REPLACE函数来替换一列中的所有数字,并且所有字母都替换为没有任何东西的另一列。它可能看起来有点混乱,但就开发时间和性能而言,它可能是最快的选择。像这样,但是对于你需要摆脱的所有字母字符重复它:

REPLACE(REPLACE(data, 'a', ''), 'b', '') 

对于第二列,再次重复您需要摆脱的所有数字字符:

REPLACE(REPLACE(data, '0', ''), '1', '') 

如果您需要/想要在SSIS中执行此操作,则可以在派生列表达式中使用嵌套替换构思。除此之外,脚本组件是最明显的想法,只要您熟悉C#或VB.NET,或者与某人合作 - 您可以使用正则表达式。

答案 1 :(得分:0)

您可以编写像t-sql这样的现场脚本来解析您的值并选择整数。使用像Perl这样的外部脚本来处理它们可能会更容易。

如果您已经有一个包含所有可能ID的表,您可以进行连接以从字符串值中删除它们。