`

Oracle 修改字段类型

 
阅读更多

1,如果只是单纯的把字段改大,比如numeric (16,2)--->numeric  (16,4) ,可直接 
    alter table 表名 modify (   字段名     numeric               (16,4) 

2,由于需求变动,现要将一个类型NUMBER(8,2)的字段类型改为 char。 
大体思路如下: 
      将要更改类型的字段名改名以备份,然后添加一个与要更改类型的字段名同名的字段(原字段已经改名),然后更新数据,最后删除改名备份的字段。 

以下操作在 Oracle 10.2.0.1.0 中通过。 

/*修改原字段名*/ 
ALTER TABLE 表名 RENAME COLUMN 字段名 TO 字段名1; 
/*添加一个和原字段同名的字段*/ 
ALTER TABLE 表名 ADD 字段名  VARCHAR2(30); 
/* 
将原来的数据更新到新字段中 
这是要注意,一定要显示进行数据类型转换(不同于MSSQL) 
*/ 
UPDATE 表名 SET 字段名 = CAST(字段名1 AS VARCHAR2(30)); 
/*删除原来的备份字段*/ 
ALTER TABLE 表名 DROP COLUMN 字段名1; 


其他方案: 

今天公司因为业务需要,修要修改某个字段数据类型有number(5),变为number(5,2)型 

要是没有数据的话直接用以下语句即可 

alter   table  tb_test  modify permile  number(5,2); 

但是有数据的话 就不能用上面方法了, 

alter table tb_test add permile_temp number(5,2) 

update tb_test set  permile_temp=permile; 

alter table drop column permile; 

alter  table test rename column  permile_temp to permile; 

这种方法会使列名发生变化,而且字段顺序增加 有可能发生行迁移,对应用程序会产生影响 

以下方法是比较好的方法 

不用使列名发生变化 也不会发生表迁移,但这个有个缺点是表要更新两次 

如果数据量较大的话 产生的undo和redo更多 ,前提也是要停机做 

要是不停机的话 ,也可以采用在线重定义方式来做 

以下是脚本: 

alter table tb_test  add permile_temp number; 
-- Add/modify columns 
alter table  tb_test  modify PERMILE null; 
update  tb_test  set permile_temp=permile,permile=null; 
commit; 
alter table  tb_test  modify permile number(5,2); 
update  tb_test  set permile=permile_temp,permile_temp=null; 
commit; 
alter table  tb_test  drop column permile_temp; 
alter table  tb_test  modify PERMILE not null; 
select * from  tb_test ; 

 

其实也可以通过一个写一个函数来实现通用的功能:修改表的字段类型。需要使用动态SQL

分享到:
评论

相关推荐

    详解Oracle修改字段类型方法总结

    最近学习了Oracle修改字段类型方法,留做记录。 有一个表名为tb,字段段名为name,数据类型nchar(20)。 1、假设字段数据为空,则不管改为什么字段类型,可以直接执行: alter table tb modify (name nvarchar2(20...

    ORACLE中CLOB字段转String类型

    ORACLE中CLOB字段转String类型

    oracle中对blob字段的处理方法

    oracle中对blob字段的处理方法,包括增加,删除,修改,更新等操作。

    oracle建表修改字段

    oracle建表修改字段,数据库简单代码,

    Oracle的CLOB大数据字段类型操作方法

    VARCHAR2既分PL/SQL Data Types中的变量类型,也分Oracle Database中的字段类型,不同场景的最大长度不同。 在Oracle Database中,VARCHAR2 字段类型,最大值为4000;PL/SQL中 VARCHAR2 变量类型,最大字节长度为...

    CLOB 字段类型报错 ORA-01704: 文字字符串过长的解决

    CLOB字段类型报错 ORA-01704:文字字符串过长的解决

    关于oracle中clob字段查询慢的问题及解决方法

    blob字段直接用 select * from table_name where column like ‘%%'查找的时候是不能实现的 ,主要是字段类型不符,就想到了 字段转换成varchar2类型,然后再进行查询 select * from table_name where utl_raw.cast...

    oracle变更数据表字段类型

    oracle变更数据表字段类型 ,简单易懂方便快捷!

    oracle删除表字段和oracle表增加字段

    修改字段的语法:alter table tablename modify (column datatype [default value][null/not null],….); 删除字段的语法:alter table tablename drop (column); 添加、修改、删除多列的话,用逗号隔开。 使用alter...

    Oracle对字段的增删改方法分享

    修改字段类型或者长度: alter table 表名 modify 字段名 字段类型 (字段长度) 例:  alter table table_name modify column_name varchar (10); 此为标准SQL,对任何数据库都适用  修改字段名: alter table ...

    简单三步轻松实现ORACLE字段自增

    代码如下: create sequence AutoID start with 1 //根据需要自己可修改该数值 increment by 1 //步长值 minvalue 1 nomaxvalue 其实到此步骤,已经可以实现字段自增了。新增记录时看如下代码: 代码如下: Insert in

    Oracle 字符集详解

    Oracle 字符集详解,包括查看,修改,导入导出,转换原理

    oracle date 类型字段的处理方法

    (1)在英文版本的ORACLE中默认日期格式为’DD-MON-YY’,例如’01-JAN-98′  在汉化的中文版本中ORACLE默认日期格式为’日-月-年’,例如’21-8月-2003’或’21-8月-03′ (2)转换字符串为日期 使用ORACLE内部函数to_...

    PHP处理Oracle的CLOB实例

    在使用PDO的预处理方法时,如果使用bindParam()等而不指定字段的数据类型或使用execute(),PDO都会默认为string类型,并且限定一个默认长度 所以在存clob类型字段时必须使用bindParam()或bindValue()等,并指定字符...

    ORACLE多表关联的update语句

    customer_type char(2) not null, -- 客户类型 ... ) create unique index PK_customers on customers (customer_id) 由于某些原因,客户所在城市这个信息并不什么准确,但是在 客户服务部的CRM子系统中,...

    对有自增长字段的表导入数据注意事项

    您可能感兴趣的文章:SQL Server设置主键自增长列(使用sql语句实现)oracle中的ID号实现自增长的方法mysql修改自增长主键int类型为char类型示例自增长键列统计信息的处理方法实现oracle数据库字段自增长(两种方式)

    oracle使用sql语句增加字段示例(sql删除字段语句)

    修改字段的语法:alter table tablename modify (column datatype [default value][null/not null],….); 删除字段的语法:alter table tablename drop (column); 添加、修改、删除多列的话,用逗号隔开。 使用alter...

    青云oracle工具

    4.修改TABLE名,VIEW名,COLUMN信息非常方便,最关键的是对它们的备注修改非常方便(对于View的字段备注的处理,某些知名软件甚至都没有提供); 5.能够列出所有的字段信息,便于对照,一般的工具里只提供表与字段的...

Global site tag (gtag.js) - Google Analytics