扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
谁能告诉偶oracle里怎么可以修改表里number数据类型的小数精度?
成都创新互联是一家专业提供丰都企业网站建设,专注与网站建设、成都网站制作、H5技术、小程序制作等业务。10年已为丰都众多企业、政府机构等服务。创新互联专业网站设计公司优惠进行中。
假如表名是tableA,列名是:colA,如果精度往小了改的话,
需要先清空表,然后在修改;
如果修改的精度更高了,可以直接修改,语句如下:
truncate table tableA;
alter table tableA modify colA NUMBER(24,2);
1. 将数据备份到零时表
CREATE GLOBAL TEMPORARY TABLE my_temp_table ON COMMIT PRESERVE ROWS
AS SELECT c.id,c.course_credit FROM course c;
-- 2. 将要修改精度的字段设为“NULL”,等价于删除该字段的所有记录
UPDATE course c SET c.course_credit = NULL;
-- 3. 修改course表,course_credit字段的类型改为number(2,1)
ALTER TABLE course MODIFY course_credit NUMBER(2,1);
偶尔我们需要在已有表,并且有数据的情况下,修改其某个字段的类型或缩短他的长度,但是因为表中有数据,所以不可以直接修改,需要换个思路。
//建立测试表,可跳过(善于应用各种系统功能组合,来实现日常工作需要,是每个合格程序员必备的)
-- Create table
create table TABLE1
(
col1 number(9),
col2 char(20)
);
//尝试修改
ALTER TABLE TABLE1 MODIFY COL1 NUMBER(10); --修改成功,因为表中无数据
//插入数据
INSERT INTO TABLE1 (COL1, COL2) VALUES (1, 'aaa');
//再次尝试修改
ALTER TABLE TABLE1 MODIFY COL2 VARCHAR2(20);--修改失败,因为表中已有数据,不允许直接操作
//先缓存表
CREATE TABLE T_TABLE1 AS SELECT * FROM TABLE1;
//删除原表所有数据
DELETE FROM TABLE1;
//修改字段
ALTER TABLE TABLE1 MODIFY COL1 NUMBER(9);--修改成功
ALTER TABLE TABLE1 MODIFY COL2 VARCHAR2(20);--修改成功
//插入原数据
INSERT INTO TABLE1 SELECT * FROM T_TABLE1;
//删除缓存表
DROP TABLE T_TABLE1;
//注意,如果是CHAR类型,不足位数会自动用空格补齐,所以谨慎使用CHAR类型,并可用TRIM()验证是否有符合条件的记录。
//初始表结构时,SELECT * FROM TABLE1 WHERE COL2 = 'aaa‘; 是没有数据的,需要SELECT *FROM TABLE1WHERE TRIM(COL2) = 'aaa';
顶
踩
上一篇oracle 修改索引现有表空间
下一篇Win7密码破解 忘记win7密码解决办法
我的同类文章
oracle(5)
•hibernate hql 查询指定字段并获取结果集,多表查询结果集2014-03-13阅读5839
•oracle 修改索引现有表空间2013-10-10阅读5620
•删除表时同时删除主键约束2011-08-16阅读468
•oracle误删除数据,恢复删除的数据,删除数据后提交恢复2013-12-05阅读721
•oracle 修改用户下部分表现有表空间2013-10-10阅读643
参考知识库
软件测试知识库
3541关注|310收录
猜你在找
微服务场景下的自动化测试
Oracle数据库
Oracle数据库从入门到精通
Oracle数据库开发之PL/SQL基础实战视频课程
Oracle数据库基础入门培训课程视频
Hibernate参考文档
hibernate2
Sql anywhere修改表字段数据类型及长度
oracle修改表字段的数据类型测试
C#中去的Oracle中的表字段类型长度精度
关闭
直接右键点表,编辑,数据类型直接改,然后点右下角view sql ,那个sql比较完整,如果用的工具是pl/sql的话
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流