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

标签 oracle types alter

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

Table  : Monthly_Result (Id Number(38,0), dealer_ID varchar2, sales_revenue Number(38,2))

dealer_Id 应更改为 Number(38,0)

请帮忙

最佳答案

正如 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;

关于oracle - 如何在 Oracle 数据库中将列的数据类型从 varchar2 更改为数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31442340/

相关文章:

sql - 在 Oracle 数据库中,ROWNUM 和 ROW_NUMBER 有什么区别?

java - 如何为 Oracle CHAR 字段设置 JDBCPreparedStatement 参数?

sql - 并排加入两个查询

python - 如何使用另一个表中的数据更新 Python 中的 oracle 表

Python len() 不返回整数

python - python中的复数

postgresql - 在postgres中更新具有空值的整数列

sql - 从 firebird 数据库的列中删除 CHARACTER SET UNICODE_FSS

sql - 检查登录的截断/更改权限

python - 使用 python 缩进命名空间