如何在Oracle数据库中将列的数据类型从varchar2更改为number

use*_*657 2 oracle types alter

当我运行alter查询时,出现错误,指出要修改的列必须为空。

Table  : Monthly_Result (Id Number(38,0), dealer_ID varchar2, sales_revenue Number(38,2))
Run Code Online (Sandbox Code Playgroud)

dealer_Id 应该更改为Number(38,0)

请帮忙

Ric*_*ard 5

正如Alex在评论中提到的那样,您需要添加新列;更新它并检查值是否正确转换;然后在准备好时删除旧列。

-- step 1
alter table monthly_result add tmp number(38, 0);
update monthly_result set tmp = to_number(dealer_id);

-- step 2
--  check values are set correctly in tmp

-- step 3
alter table monthly_result rename column dealer_id to dealer_id_old;
alter table monthly_result rename column tmp to dealer_id;

-- step 4
alter table monthly_result drop column dealer_id_old;
Run Code Online (Sandbox Code Playgroud)