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修改字段类型方法,留做记录。 有一个表名为tb,字段段名为name,数据类型nchar(20)。 1、假设字段数据为空,则不管改为什么字段类型,可以直接执行: alter table tb modify (name nvarchar2(20...
ORACLE中CLOB字段转String类型
oracle中对blob字段的处理方法,包括增加,删除,修改,更新等操作。
oracle建表修改字段,数据库简单代码,
VARCHAR2既分PL/SQL Data Types中的变量类型,也分Oracle Database中的字段类型,不同场景的最大长度不同。 在Oracle Database中,VARCHAR2 字段类型,最大值为4000;PL/SQL中 VARCHAR2 变量类型,最大字节长度为...
CLOB字段类型报错 ORA-01704:文字字符串过长的解决
blob字段直接用 select * from table_name where column like ‘%%'查找的时候是不能实现的 ,主要是字段类型不符,就想到了 字段转换成varchar2类型,然后再进行查询 select * from table_name where utl_raw.cast...
oracle变更数据表字段类型 ,简单易懂方便快捷!
修改字段的语法:alter table tablename modify (column datatype [default value][null/not null],….); 删除字段的语法:alter table tablename drop (column); 添加、修改、删除多列的话,用逗号隔开。 使用alter...
修改字段类型或者长度: alter table 表名 modify 字段名 字段类型 (字段长度) 例: alter table table_name modify column_name varchar (10); 此为标准SQL,对任何数据库都适用 修改字段名: alter table ...
代码如下: create sequence AutoID start with 1 //根据需要自己可修改该数值 increment by 1 //步长值 minvalue 1 nomaxvalue 其实到此步骤,已经可以实现字段自增了。新增记录时看如下代码: 代码如下: Insert in
Oracle 字符集详解,包括查看,修改,导入导出,转换原理
(1)在英文版本的ORACLE中默认日期格式为’DD-MON-YY’,例如’01-JAN-98′ 在汉化的中文版本中ORACLE默认日期格式为’日-月-年’,例如’21-8月-2003’或’21-8月-03′ (2)转换字符串为日期 使用ORACLE内部函数to_...
在使用PDO的预处理方法时,如果使用bindParam()等而不指定字段的数据类型或使用execute(),PDO都会默认为string类型,并且限定一个默认长度 所以在存clob类型字段时必须使用bindParam()或bindValue()等,并指定字符...
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数据库字段自增长(两种方式)
修改字段的语法:alter table tablename modify (column datatype [default value][null/not null],….); 删除字段的语法:alter table tablename drop (column); 添加、修改、删除多列的话,用逗号隔开。 使用alter...
4.修改TABLE名,VIEW名,COLUMN信息非常方便,最关键的是对它们的备注修改非常方便(对于View的字段备注的处理,某些知名软件甚至都没有提供); 5.能够列出所有的字段信息,便于对照,一般的工具里只提供表与字段的...