结果是不是不能修改,还是改完后数据丢失??
解决方案 »
- 现有一张表,速求能够帮我做一条oracle语句?
- 用C#执行SQL语句出错,在PL/SQL里面却正常?
- oracle 数据库 group by 的问题
- oracle 物化视图 long 类型问题!
- 50分求oracle写文件的问题,服务器客户端是分开的
- snapshot too old怎么解决
- 创建数据库出错:invalid stored block lengths ????
- 请问在sql*plus worksheet里用DBMS_OUTPUT.PUT_LINE('THE');怎么看不到结果?
- 如何把从某个表中select出来的数据插入另一个表中
- 如何取分组后的每组的最大值的问题。
- Oracle 对于blob型字段的查询疑问。
- 分组求和的SQL语句
oracle中某表的字段设置为number(9),现欲改为Varchar2(5),但是库中有很多数据,怎样能保证数据不丢失,把类型改过来?
--------------------------------------------------------------- SQL> create table aaa (a number(9)); Table created. Elapsed: 00:00:00.32
SQL> insert into aaa values(999); 1 row created. Elapsed: 00:00:00.03
SQL> commit; Commit complete. Elapsed: 00:00:00.00
SQL> alter table aaa add b varchar2(5); Table altered. Elapsed: 00:00:00.17
SQL> update aaa set a=b; 1 row updated. Elapsed: 00:00:00.02
SQL> commit; Commit complete. Elapsed: 00:00:00.03
SQL> alter table aaa drop column a; Table altered. Elapsed: 00:00:00.52
SQL> alter table aaa rename column b to a; Table altered. Elapsed: 00:00:00.04
SQL>
[code=SQL]/*修改原字段名*/ ALTER TABLE 表名 RENAME COLUMN 字段名 TO 字段名1; /*添加一个和原字段同名的字段*/ ALTER TABLE 表名 ADD 字段名 VARCHAR2(30); /* 将原来的数据更新到新字段中 这是要注意,一定要显示进行数据类型转换(不同于MSSQL) */ UPDATE 表名 SET 字段名 = CAST(字段名1 AS VARCHAR2(30)); /*删除原来的备份字段*/ ALTER TABLE 表名 DROP COLUMN 字段名1;
code]
2.然后再创建新表,然后使用子查询 insert into 新表 values(值1,值2,...值n) select * from 原表,前提条件是所建的新表列的数据类型要和修改后的原表一至。