如何将数据从一列复制到oracle中具有不同数据类型的同一表中的另一列

时间:2014-02-17 10:31:00

标签: oracle

我想将数据从VISITSAUTHORIZED VARCHAR2(11)列复制到VISITORS NUMBER(5)列。 有人可以帮忙吗?

3 个答案:

答案 0 :(得分:1)

alter table <table> add visitors number(5);

update <table> set visitors = visitsauthorized;

alter table <table> drop column visitsauthorized;

当然,如果visitedauthorized包含非数字值,则此方法将失败。

Alternativaly,您可能想要使用dbms_redefinition,但坦率地说,我对它的体验不是很积极,至少在11i上(例如参见this dba.exchange question

答案 1 :(得分:1)

如果你不想改变你的表格结构,

如果VISITSAUTHORIZED长度为5或更短

,请使用以下查询
UPDATE table_name SET VISITORS=to_number(VISITSAUTHORIZED)

如果VISITSAUTHORIZED长度超过5,则对VISITSAUTHORIZED列进行修剪,然后将其更新为

UPDATE table_name SET VISITORS=to_number(SUBSTR(VISITSAUTHORIZED,1,5))

答案 2 :(得分:0)

虽然应对使用cast()功能。For reference