我想更改Oracle表中一列的数据类型(varchar 2到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;
型
3条答案
按热度按时间anhgbhbe1#
对于每一行,该操作将在同一行上完成。
请注意,如果不想更新所有表行,则需要添加
WHERE
子句。s6fujrry2#
UPDATE foo_table SET some_column = another_column
使用同一行的some_column
和another_column
。但请注意,它对foo_table
的每一行都这样做;请确保它是您想要的。0sgqnhkj3#
如果你不想要任何提示,
您将要对“temp1”执行不带WHERE子句的UPDATE语句。可能会丢失数据。是否确定?
使用一个伪where子句,如:UPDATE temp1 SET temp_place = place WHERE 1 =1