将列复制到oracle db中同一表中的另一列。我需要指定哪些数据在哪里?

时间:2014-07-14 15:59:33

标签: sql database oracle

我想将oracle表中列的数据类型(varchar2更改为number),并且该列不为空。所以我想我会做的是,创建一个新列,将数据从一列复制到另一列。禁用/删除上一列并重命名新列。

要在相同列之间复制数据,我可以使用:

UPDATE TABLE_NAME SET NEW_COLUMN = TO_NUMBER(OLD_COLUMN);

但在此之前我想确认的是,我是否需要指定哪一行的数据在哪里?或者它将被复制到列中的相邻行? 我的意思是,我需要做一些像:

UPDATE (SELECT TO_NUMBER(OLD_COLUMN) AS OLDISH, NEW_COLUMN AS NEWISH FROM TABLE_NAME A, TABLE_NAME B WHERE A.ID = B.ID) SET NEWISH = OLDISH;

2 个答案:

答案 0 :(得分:7)

操作将在每行的同一行上完成。

请注意,如果您不想更新所有表行,则需要添加WHERE子句。

答案 1 :(得分:3)

UPDATE foo_table SET some_column = another_column使用同一行的some_columnanother_column。但请注意,它在foo_table的每一行都这样做;确保它是你想要的。