bn0*_*00d 4 sql database oracle
我想更改oracle表中列的数据类型(varchar2到number),并且该列不为空.所以我想我会做的是,创建一个新列,将数据从一列复制到另一列.禁用/删除上一列并重命名新列.
要在相同列之间复制数据,我可以使用:
UPDATE TABLE_NAME SET NEW_COLUMN = TO_NUMBER(OLD_COLUMN);
Run Code Online (Sandbox Code Playgroud)
但是在做这个之前我想要确认的是,我是否需要指定哪一行的数据在哪里?或者它将被复制到列中的相邻行?我的意思是,我是否需要做以下事情:
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;
Run Code Online (Sandbox Code Playgroud)
UPDATE foo_table SET some_column = another_column使用some_column和another_column同一行。但请注意,它在foo_table; 的每一行都这样做。确保它是你想要的。