我有一个旧数据库,其中一个表包含许多列,其中一个列名为 oper ,其类型为varchar,此表中有180,000多行,其值为列可以是以下之一:
first
second
third
fourth
fifth
现在我更新了我的表并使数据类型为int。所以,如果我想插入旧数据,我不能因为类型之间的不同(int - string)。
我需要一些方法来循环抛出表格行并检查 oper 的值
如果旧值等于“first”复制行并首先更改为1并将此行放入新表
如果旧值等于“秒”,则复制该行并首先更改为2并将此行放入新表
依旧.....
我有什么方法可以做到吗?
答案 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