我想将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;
答案 0 :(得分:7)
操作将在每行的同一行上完成。
请注意,如果您不想更新所有表行,则需要添加WHERE
子句。
答案 1 :(得分:3)
UPDATE foo_table SET some_column = another_column
使用同一行的some_column
和another_column
。但请注意,它在foo_table
的每一行都这样做;确保它是你想要的。