如何一次更改一列的大量数据?

时间:2011-02-24 23:10:37

标签: database sql-server-2008 types

我有一个旧数据库,其中一个表包含许多列,其中一个列名为 oper ,其类型为varchar,此表中有180,000多行,其值为列可以是以下之一:

first
second
third
fourth
fifth

现在我更新了我的表并使数据类型为int。所以,如果我想插入旧数据,我不能因为类型之间的不同(int - string)。

我需要一些方法来循环抛出表格行并检查 oper 的值

如果旧值等于“first”复制行并首先更改为1并将此行放入新表

如果旧值等于“秒”,则复制该行并首先更改为2并将此行放入新表

依旧.....

我有什么方法可以做到吗?

1 个答案:

答案 0 :(得分:5)

听起来你想要从旧表中插入新表。

INSERT INTO NewTable (Col1, Col2, Col3, Oper) --Oper is an int, right?

    SELECT Col1, Col2, Col3, 
           CASE Oper
              WHEN  'first' THEN 1
              WHEN  'second' THEN 2
              WHEN 'third' THEN 3
              WHEN 'fourth' THEN 4
              WHEN 'fifth' THEN 5
           ELSE -1 END
    FROM OldTable