`

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 ;



修改oracle数据字段类型时,如果表中有数据可以采用如下方法更改


ALTER TABLE 表名 RENAME COLUMN 字段名 TO 字段名1;

ALTER TABLE 表名 ADD 字段名  VARCHAR2(30);

UPDATE 表名 SET 字段名 = CAST(字段名1 AS VARCHAR2(30));

ALTER TABLE 表名 DROP COLUMN 字段名1;




下面是示例代码:

修改字段ID_NO的类型

---------------------------------------------------------------


ALTER TABLE g3_userinfo RENAME COLUMN ID_NO TO ID_NO1;

ALTER TABLE g3_userinfo ADD ID_NO  VARCHAR2(20) ;

UPDATE g3_userinfo SET ID_NO = CAST(ID_NO1 AS VARCHAR2(20));

ALTER TABLE g3_userinfo DROP COLUMN ID_NO1;
分享到:
评论

相关推荐

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

    本文主要针对Oracle修改字段类型的方法进行详细讲解,特别是在面对不同情况时如何有效地进行操作。 首先,我们来看一个具体的例子,假设有一个名为`tb`的表,其中包含一个名为`name`的字段,其数据类型为`nchar(20)...

    Oracle 增加修改删除字段

    修改字段通常包括改变字段的数据类型、默认值、是否允许为空等属性。语法如下: ```sql ALTER TABLE 表名 MODIFY (字段名 数据类型 [默认值] [NULL/NOT NULL]); ``` **示例**:修改`test1`表中的`name`字段,将其...

    oracle字段类型转换的处理

    在Oracle数据库中,字段类型转换是一项常见的操作,特别是在数据迁移、数据清洗或处理来自不同数据源的数据时。本文将深入探讨Oracle字段类型的转换方法,并提供一个实用的工具示例。 Oracle数据库支持多种数据类型...

    oracle中对blob字段的处理方法

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

    ORACLE中CLOB字段转String类型

    ### ORACLE中CLOB字段转String类型 在Oracle数据库中,`CLOB`(Character Large Object)是一种用于存储大量文本数据的数据类型。由于其能够存储非常大的文本块(最大可达4GB),因此常被用于存储文章、报告或任何...

    Oracle LOB字段处理工具

    Oracle数据库系统中,LOB(Large Object)字段是用来存储大量数据的类型,如图像、音频、视频或大型文本文件。在数据库操作中,LOB字段的处理往往比常规的行数据更为复杂,因为它涉及到大块的数据读取、写入和管理。...

    oracle建表修改字段

    根据给定的文件信息,我们将深入探讨“oracle建表修改字段”的核心知识点,包括如何使用SQL语句创建表、定义字段属性以及如何修改现有字段的属性。 ### 创建表(Create Table) 在Oracle中,使用`CREATE TABLE`...

    oracle变更数据表字段类型

    由于直接修改字段类型可能会导致数据丢失或者错误,因此需要采用一系列的操作来完成这一过程。接下来将详细介绍如何在Oracle中安全且高效地更改数据表中的字段类型。 #### 一、背景介绍 在日常的数据库维护工作中,...

    OCCI添加Oracle特殊数据字段类型

    OCCI 提供了一个强大且灵活的方式来访问 Oracle 数据库,支持多种数据类型,包括 Oracle 特殊数据字段类型。 在 Oracle 数据库中,有多种特殊数据字段类型,例如 SDO_GEOMETRY 字段,该字段用于存储空间几何数据。...

    oracle修改表结构

    在Oracle数据库管理中,对表结构进行修改是一项常见的任务,涉及到添加字段、修改字段属性、删除字段、重命名表或字段、以及注释等操作。以下是对这些操作的详细解析: ### 添加字段 使用`ALTER TABLE`语句可以向...

    java中操作oracle的CLOB字段精解

    Java 中操作 Oracle 的 CLOB 字段精解 Java 中操作 Oracle 的 CLOB 字段是...在 Java 中操作 Oracle 的 CLOB 字段需要使用 Oracle 的 JDBC 驱动程序,了解 CLOB 字段的类型和特点,并掌握插入、修改和处理异常的技术。

    oracle中blob 字段类型的应用

    Oracle中的Blob字段类型是用于存储大量二进制数据的数据类型,比如图像、音频或大型文档。Blob代表Binary Large Object,其最大容量可达4GB。在Oracle数据库中,Blob与Clob(Character Large Object)、Bfile和Nclob...

    oracle数据库中的对表中字段的增删改查

    修改字段类型可能需要转换数据;查询字段时应考虑性能优化,如创建合适的索引。 总之,Oracle数据库中对表中字段的增删改查是数据库管理的基础,而源码和工具的选择能有效提升工作效率和代码质量。理解并熟练掌握...

    运用Java如何存取Oracle中的CLOB类型字段

    在IT领域,尤其是在数据库操作与Java编程的交集部分,理解和掌握如何在Java中存取Oracle数据库中的CLOB(Character Large Object)类型字段是至关重要的技能。CLOB数据类型主要用于存储大量的文本信息,如文章、报告...

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

    在Oracle数据库中,CLOB(Character Large Object)字段类型用于存储大量的文本数据,如XML文档、长篇文章或者大量字符数据。然而,当你尝试向CLOB字段插入数据时,如果超过了Oracle规定的最大限制,就会遇到“ORA-...

    oracle_修改表结构

    本篇文章将详细介绍如何利用Oracle中的`ALTER TABLE`命令来修改表结构,包括添加字段、修改字段、删除字段、重命名表以及添加注释等功能。 #### 二、添加字段 添加字段是最常见的需求之一,通常用于扩展已有表的...

    Oracle 修改数据库库表的各种情况和SQL语句

    如果需要修改字段的默认值,需要注意数据类型的兼容性。 - **数据类型一致**:当新旧默认值的数据类型相同时,可以直接修改默认值: ```sql ALTER TABLE table_name MODIFY (column_name DEFAULT new_value); `...

    ORACLE根据某一列的值修改另一列的值

    Oracle 数据库开发培训中根据某一列的值修改另一列的值 Oracle 数据库是一种关系型数据库管理系统,广泛应用于企业级应用程序中。在 Oracle 数据库中,我们可以使用 update 语句来修改某一列的值根据另一列的值。...

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

    在Oracle中,VARCHAR2作为字段类型的最大存储量为4000个字符,而在PL/SQL编程环境中,VARCHAR2变量的限制更宽松,可以达到32767个字节,但请注意,这32767个字节是基于字符集的,不同的字符集可能会有不同的字节数。...

Global site tag (gtag.js) - Google Analytics