oracle修改表字段的数据类型的测试

思路

将要更改类型的字段名改名新字段以备份;

根据需求,添加一个与要更改类型的字段名同名的字段(原字段已经改名),

然后更新数据,

最后删除改名备份的字段

脚本如下:

/*修改原字段名*/

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

/*添加一个和原字段同名的字段*/

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

/*将原来的数据更新到新字段中一定要显示进行数据类型转换*/

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

/*删除原来的备份字段*/

ALTER TABLE 表名 DROP COLUMN 字段名1;

测试如下:

1.备份表

SQL> create table tt_bak_01 as select *  from tt;

Table created.

2.想偷懒,现实直接修改字段如下: SQL> alter table tt modify (DATA_OBJECT_ID number);

alter table tt modify (DATA_OBJECT_ID number)

*

ERROR at line 1:

ORA-01439: column to be modified must be empty to change datatype

不行,只得转变方法 3.检查表结构 SQL> desc tt  Name                                                                 Null?    Type  -------------------------------------------------------------------- -------- ----------------------------------------------  OWNER                                                                         VARCHAR2(30)  OBJECT_NAME                                                                   VARCHAR2(128)  SUBOBJECT_NAME                                                                VARCHAR2(30)  OBJECT_ID                                                                     NUMBER  DATA_OBJECT_ID                                                                NUMBER  OBJECT_TYPE                                                                   VARCHAR2(19)  CREATED                                                                       DATE  LAST_DDL_TIME                                                                 DATE  TIMESTAMP                                                                     VARCHAR2(19)  STATUS                                                                        VARCHAR2(7)  TEMPORARY                                                                     VARCHAR2(1)  GENERATED                                                                     VARCHAR2(1)  SECONDARY                                                                     VARCHAR2(1) 4.备份需要修改的字段 SQL> ALTER TABLE tt RENAME COLUMN DATA_OBJECT_ID to DATA_OBJECT_ID01; Table altered. SQL> desc tt  Name                                                                 Null?    Type  -------------------------------------------------------------------- -------- ----------------------------------------------  OWNER                                                                         VARCHAR2(30)  OBJECT_NAME                                                                   VARCHAR2(128)  SUBOBJECT_NAME                                                                VARCHAR2(30)  OBJECT_ID                                                                     NUMBER  OBJECT_TYPE                                                                   VARCHAR2(19)  CREATED                                                                       DATE  LAST_DDL_TIME                                                                 DATE  TIMESTAMP                                                                     VARCHAR2(19)  STATUS                                                                        VARCHAR2(7)  TEMPORARY                                                                     VARCHAR2(1)  GENERATED                                                                     VARCHAR2(1)  SECONDARY                                                                     VARCHAR2(1)  DATA_OBJECT_ID                                                                VARCHAR2(100) 5.根据业务需求,添加合适的字段以及相应数据类型 SQL> ALTER TABLE tt ADD DATA_OBJECT_ID VARCHAR2(100); Table altered. SQL> desc tt  Name                                                                 Null?    Type  -------------------------------------------------------------------- -------- ----------------------------------------------  OWNER                                                                         VARCHAR2(30)  OBJECT_NAME                                                                   VARCHAR2(128)  SUBOBJECT_NAME                                                                VARCHAR2(30)  OBJECT_ID                                                                     NUMBER  DATA_OBJECT_ID01                                                              NUMBER  OBJECT_TYPE                                                                   VARCHAR2(19)  CREATED                                                                       DATE  LAST_DDL_TIME                                                                 DATE  TIMESTAMP                                                                     VARCHAR2(19)  STATUS                                                                        VARCHAR2(7)  TEMPORARY                                                                     VARCHAR2(1)  GENERATED                                                                     VARCHAR2(1)  SECONDARY                                                                     VARCHAR2(1)  DATA_OBJECT_ID                                                                VARCHAR2(100) 6.更新字段数据到新修改的字段中 SQL> UPDATE tt SET  DATA_OBJECT_ID = CAST(DATA_OBJECT_ID01 AS VARCHAR2(100)); 390 rows updated. SQL> 检查: SQL> select DATA_OBJECT_ID01 from tt minus   2    3  select to_number(DATA_OBJECT_ID) from tt; no rows selected 7.删除备份的字段结构 SQL> ALTER TABLE tt DROP COLUMN  DATA_OBJECT_ID01; Table altered. SQL> desc tt;  Name                                                                 Null?    Type  -------------------------------------------------------------------- -------- ----------------------------------------------  OWNER                                                                         VARCHAR2(30)  OBJECT_NAME                                                                   VARCHAR2(128)  SUBOBJECT_NAME                                                                VARCHAR2(30)  OBJECT_ID                                                                     NUMBER  OBJECT_TYPE                                                                   VARCHAR2(19)  CREATED                                                                       DATE  LAST_DDL_TIME                                                                 DATE  TIMESTAMP                                                                     VARCHAR2(19)  STATUS                                                                        VARCHAR2(7)  TEMPORARY                                                                     VARCHAR2(1)  GENERATED                                                                     VARCHAR2(1)  SECONDARY                                                                     VARCHAR2(1)  DATA_OBJECT_ID                                                                VARCHAR2(100) SQL> select count(*) from tt;   COUNT(*) ----------        390 By 老白菜 ========================================================================= -- The End --

oracle 测试数据类型,oracle修改表字段的数据类型测试相关推荐

  1. oracle修改字段的默认,oracle系统默认的账号ORACLE修改表字段的数据类型

    ORACLE修改表字段的数据类型 项目需求变更,需要用到备用字段,开始以为是这样改表的: alter table tablename alter column colname newDataType ...

  2. Oracle查询表名注释及表字段注释

    Oracle查询表名注释及表字段注释 系统视图-ALL_COL_COMMENTS ALL_COL_COMMENTS视图存储当前用户可访问的表中字段的注释信息. 名称 类型 描述 column_name ...

  3. 修改表字段类型长度_PG修改字段

    今天又遇到一个需求,要把PG中的字段类型修改一下.本来以为是个很简单的事情,毕竟Oracle就是一条指令就行了.但是在PG中改字段真的真的太难了. 当你修改表字段的时候,会报ERROR: cannot ...

  4. Mysql 使用【information_schema.COLUMNS】批量修改表字段注释

    接手一个新项目,已经初步开发并上线了.因开发人员不按规范开发,数据库表中的字段注释基本没有,线上追加注释不方便,最后解决是在测试端生成相应的修改字段的Sql语句来同步线上的字段保证线上.线下数据库表. ...

  5. mysql中修改表字段名/字段长度/字段类型详解

    在mysql中我们对数据表字段的修改命令只要使用alter就可以了,下面我来给大家详细介绍mysql中修改表字段名/字段长度/字段类型等等一些方法介绍,有需要了解的朋友可参考. 先来看看常用的方法 M ...

  6. mysql修改表字段名称

    修改表字段名格式如下: alter table 表名 change column 旧字段名 新字段名 [约束条件]: alter table MESSAGE change column LeaveMe ...

  7. postgre 修改表字段默认值

    修改表字段默认值 alter table alf_authority alter column downloadflag set default 'true'; alter table alf_aut ...

  8. 修改mysql表的字段名_mysql中修改表字段名/字段长度/字段类型详解

    在mysql中我们对数据表字段的修改命令只要使用alter就可以了,下面我来给大家详细介绍mysql中修改表字段名/字段长度/字段类型等等一些方法介绍,有需要了解的朋友可参考. 先来看看常用的方法 M ...

  9. Oracle应用之修改表字段类型

    Mysql对于有数据和没数据的表字段类型都可以随意修改,不过oracle就不一样. 假如表A有个字段a,本来为number类型,然后我们想修改为varchar2类型. (1)字段a没数据的情况,改为v ...

最新文章

  1. python自然语言处理.词性标注
  2. 检查一列数据的重复项 vba_01.VBA自动化办公——数据的局部加和
  3. citrix 路径遍历 rce漏洞(CVE-2019-19781)
  4. [X11forword]Display remote application with X11 forword / 远程显示linux服务器GUI
  5. Python四道面试题
  6. 实现mvcc_一文读懂 etcd 的 mvcc 实现
  7. BDB (Berkeley DB)简要数据库(转载)
  8. JavaScript | 声明数组并在每个循环中使用的代码
  9. 如何注册鸿蒙id,鸿蒙系统真机调试证书 和 设备ID获取
  10. oracle数据库王珊,数据库系统概论 王珊 教材部分总结
  11. python对象_Python对象()
  12. 网络弱电工程办理签证注意九个方面
  13. origin 一键导出文件夹中所有图形
  14. 【windows服务器使用cwRsync实时同步】
  15. DDOS误判怎么预防
  16. 动漫人物各种角度的画法大合集
  17. 初学者-CSS思维导图(上)
  18. “2021流行趋势发布·新品试骑活动”引爆羊城
  19. 升级IOS10 出现的兼容性的问题
  20. c语言---指针结构体篇

热门文章

  1. 矩阵的逆以及实际应用
  2. Juniper EX3400
  3. c语言实现程序只执行一次,请问大家,为什么我调用我定义的函数俩次,但是程序只执行一次...
  4. matlab图形绘制经典案例,MATLAB经典教程第四章_图形绘制.ppt
  5. 个人okr_我如何通过个人OKR完成了一个亿的小目标
  6. js密码强度正则表达式_这20个正则表达式,能让你少写100行代码
  7. linux nand 坏块_linux内核中对nand的坏块管理
  8. python之蓝图blueprint浅析
  9. mysql web搜索系统_【20201011】做个搜索引擎(6)——网页蜘蛛代码编写(二)
  10. 三方博弈matlab_小星星的读研日记之电商动态博弈知多少?