拆分字符串并将它们添加到另一个表中

时间:2013-07-18 14:50:51

标签: sql sql-server split

我正在使用SQL server management studio express。我有一个表格,列名如:periodaccount,等等。

account列包含2abc-414-3136-12356478-000-0000-000

等值

我需要做的是拆分值并将它们添加到另一个表格,例如2abc转到company name414转到location code3136转到Department code12356478转到nat acc000pg0000ig000Fut

详细解释将深表感谢。此外,我对编写代码的位置感到困惑,请解释一下。

1 个答案:

答案 0 :(得分:1)

我假设你的信息是相同的(7个字段就像你的例子)

declare @a varchar(500)

declare #crs insensitive cursor for
select account from mysourcetable
for read only
open #crs
fetch next from #crs into @a
while(@@FETCH_STATUS = 0)
begin

    declare @rest varchar(500)

    declare @field1 varchar(20)
    set @field1 = SUBSTRING(@a, 0, charindex('-', @a))
    set @rest = SUBSTRING(@a, charindex('-', @a) + 1, 100)

    declare @field2 varchar(20)
    set @field2 = SUBSTRING(@rest, 0, charindex('-', @rest))
    set @rest = SUBSTRING(@rest, charindex('-', @rest) + 1, 100)

    declare @field3 varchar(20)
    set @field3 = SUBSTRING(@rest, 0, charindex('-', @rest))
    set @rest = SUBSTRING(@rest, charindex('-', @rest) + 1, 100)

    declare @field4 varchar(20)
    set @field4 = SUBSTRING(@rest, 0, charindex('-', @rest))
    set @rest = SUBSTRING(@rest, charindex('-', @rest) + 1, 100)

    declare @field5 varchar(20)
    set @field5 = SUBSTRING(@rest, 0, charindex('-', @rest))
    set @rest = SUBSTRING(@rest, charindex('-', @rest) + 1, 100)

    declare @field6 varchar(20)
    set @field6 = SUBSTRING(@rest, 0, charindex('-', @rest))
    set @rest = SUBSTRING(@rest, charindex('-', @rest) + 1, 100)

    declare @field7 varchar(20)
    set @field7 = @rest

    insert into mytargettable (field1, field2, field3, field4, field5, field6, field7)
    values (@field1, @field2, @field3, @field4, @field5, @field6, @field7)

    fetch next from #crs into @a
end
close #crs
deallocate #crs

这个结果你可以放入一个带有光标的循环,以便通过查询滚动表格的所有行。您可以使用insert语句填充目标表,而不是最终选择。

告诉我是否可以。

编辑后: 我已将原始分割封装到光标中。 游标是一个获取查询输出并使用fetch命令处理每一行的工具。 在您的情况下,我将表的字段帐户值放在@a变量中。

@@ FETCH_STATUS检查是否存在要处理的其他行。因此,在迭代结束时,我将目标表放入结果并继续。

这是一个模板,你必须为你的目标定制,如果有一些sintax bug请修复,因为我写了没有真正的测试。 祝你有愉快的一天