oracle 修改字段类型

转载 2017年10月06日 20:58:24
有一个表名为tb,字段段名为name,数据类型nchar(20)。

1、假设字段数据为空,则不管改为什么字段类型,可以直接执行:
alter table tb modify (name nvarchar2(20));

2、假设字段有数据,则改为nvarchar2(20)可以直接执行:
alter table tb modify (name nvarchar2(20));

3、假设字段有数据,则改为varchar2(40)执行时会弹出:“ORA-01439:要更改数据类型,则要修改的列必须为空”,这时要用下面方法来解决这个问题

/*修改原字段名name为name_tmp*/
alter table tb rename column name to name_tmp;

/*增加一个和原字段名同名的字段name*/
alter table tb add name varchar2(40);

/*将原字段name_tmp数据更新到增加的字段name*/
update tb set name=trim(name_tmp);

/*更新完,删除原字段name_tmp*/
alter table tb drop column name_tmp;

总结:
1、当字段没有数据或者要修改的新类型和原类型兼容时,可以直接modify修改。
2、当字段有数据并用要修改的新类型和原类型不兼容时,要间接新建字段来转移。

相关文章推荐

Apache 使用ssl模块配置HTTPS

Web服务器在默认情况下使用HTTP,这是一个纯文本的协议。正如其名称所暗示的,纯文本协议不会对传输中的数据进行任何形式的加密。而基于HTTP的Web服务器是非常容易配置,它在安全方面有重大缺陷。任何...

Android设计模式学习之观察者模式

观察者模式在实际项目中使用的也是非常频繁的,它最常用的地方是GUI系统、订阅——发布系统等。因为这个模式的一个重要作用就是解耦,使得它们之间的依赖性更小,甚至做到毫无依赖。以GUI系统来说,应用的UI...

【笔记】编译报错error: cannot convert ‘main(int, char**)::sockadrr*’ to ‘const sockaddr*’ for

今晚没事写一个demo做测试,编译的时候遇到如下报错: [penny@centos-system socket-demo]$ g++ client.cpp -o client.o client.cp...

VMware宣布开放大部分虚拟机工具

贴出者为 Anonymous Anonymous写著 VMware宣布,开放“大部分”VMware工具作为开源软件,而且这只是作为VMware公司“Open-VM-Tools”项目的一部分。 VM...

大型分布式数据库中间件MyCat的安装与使用

官网资料MyCat官网:http://www.mycat.io/MyCat权威指南:http://www.mycat.io/document/Mycat_V1.6.0.pdfMyCat下载地址:htt...

delphi相对数据库连接

搞了好久 今天在网上找了一个 方法procedure TForm1.FormCreate(Sender: TObject); begin SetCurrentDir(Extractfilepath(A...

Flask和Celery的使用

显示更新状态和结果The above example is overly simple, the background job is started and then the application ...

Java中堆和栈的区别

堆: 是大家共有的空间,分全局堆和局部堆。全局堆就是所有没有分配的空间,局部堆就是用户分配的空间。堆在操作系统对进程初始化的时候分配,运行过程中也可以向系统要额外的堆,但是记得用完了要还给操作系统,要...

程序员的未来,在哪里?

推荐序二本文选自《我也能做CTO之程序员职业规划》一书    我的未来,在哪里?    我可以肯定地说:每个有进取心的人都曾问过自己这样一个问题。身处程序员这个特殊的群体,我们每天忙忙碌碌,承受着比其...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)