在一次做开发的时候,遇到需要将数据表的字段类型由number改成varchar,可是该字段又有值,

用  alter table t-name modify cname newType;会报错。

话说,当时在网上没找到合适的解决办法,很苦恼!

今天在博客园看到解决这个问题的办法,很nice,分享!

当要修改的字段有值的时候,不能更改字段类型

两种解决办法:

1、   > 新增一列,列类型与要修改的新类型一致;

>将旧列的值赋给新列(需强制类型转换);

> update tname set cname_new=cast(cname_old as 新类型)

>删除旧列。

这种办法,改变了列在表里面的位置。

2、      >新增一列,列类型与旧列相同;

>将旧列的值赋给新列,旧列的值变为null;

update tname set cname_new =cname_old;

> 更改旧列的字段类型(此时为null,可以修改)

alter table tname modify cname_old  newType;

> 将新列的值赋给旧列;

update tname set cname_old=cname_new;

>删除新列。

相关sql语句:

      

查看oracle版本:select * from v$version;

更新字段名:alter table 表名 rename column 旧列名 to 新列名;

新增字段:   alter table 表名 add 列名 列类型;

新增字段并赋值: alter table 表名 add 列名 列类型 default 默认值;

删除字段:  alter table 表名 drop column 列名;

修改字段值:update 表名 set 列名=value where ...

修改字段类型: alter table 表名 modify 列名 类型;

参考:http://www.cnblogs.com/david-zhang-index/archive/2012/04/10/2441015.html

oracle如何修改字段类型(oracle总体知识2)的更多相关文章

  1. Oracle/SQL 修改字段类型和长度

    标准SQL修改字段类型和长度语句: ALTER TABLE tableName modify column columnName 类型;例如Mysql的修改字段类型语句:alter table tes ...

  2. Oracle怎么修改字段类型

    转载:https://www.2cto.com/database/201710/689523.html 有一个表名为tb,字段段名为name,数据类型nchar(20). 1.假设字段数据为空,则不管 ...

  3. Oracle修改字段类型和长度

    Oracle修改字段名 alter table 表名 rename column 旧字段名 to 新字段名 Oracle修改字段类型和长度 alter table 表名 modify 字段名 数据类型 ...

  4. Oracle基本操作,Oracle修改列名,Oracle修改字段类型

    oracle基本操作,Oracle修改列名,Oracle修改字段类型 >>>>>>>>>>>>>>>>& ...

  5. oracle修改字段类型由varchar2修改为clob类型

    oracle修改字段类型由varchar2修改为clob类型 http://blog.sina.com.cn/s/blog_9d12d07f0102vxis.html

  6. Oracle使用SQL语句修改字段类型

    Oracle使用SQL语句修改字段类型 1.如果表中没有数据 Sql代码 1 2 3 alter table 表名 modify (字段名1 类型,字段名2 类型,字段名3 类型.....)  alt ...

  7. Oracle创建表、修改字段类型

    1.创建表 1.创建表 create table SCM_PER( --SCM_PER表名 ID ) primary key,--主键ID USERID ),--用户ID --Permission v ...

  8. Oracle 批量修改字段长度

    Oracle 批量修改字段长度 SELECT  'alter table '||a.table_name||' MODIFY  '||A.COLUMN_NAME||' VARCHAR2(100);' ...

  9. ORACLE常用数据库字段类型

    ORACLE常用数据库字段类型   常用的数据库字段类型如下:   字段类型 中文说明 限制条件 其它说明  CHAR 固定长度字符串 最大长度2000 bytes     VARCHAR2 可变长度 ...

随机推荐

  1. openstack之neutron linuxbridge + vlan组网

    linuxbridge是和linuxbridge plugin匹配的core agent,主要实现L2层的功能和security group的功能.security group的功能逐渐会被neutr ...

  2. EF(ServerFirst)执行存储过程实例1(带输出参数)

    1.不含动态sql.带输出参数存储过程调用实例 a.存储过程代码: b.EF自动生成代码(包括对应ObjectResult的实体模型): c.调用存储过程代码实例:  总结: ObjectParame ...

  3. 关于在App_Code文件夹自定义类中Session无法使用

    由于前台页面需要调用App_Code中自定义类的函数,但在自定义类中找不到Session,解决方法如下: 新建一个类session,并自己定义函数GetSession(),引用命名空间 System. ...

  4. C#Base64加密

    using System;using System.Collections.Generic;using System.Text;using System.Security.Cryptography;u ...

  5. 浅谈HtmlParser

    使用Heritrix抓取到自己所需的网页后,还需要对网页中的内容进行分类等操作,这个时候就需要用到htmlparser,但是使用htmlparser并不是那么容易!因为相关的文档比较少,很多更能需要开 ...

  6. iOS 常用第三方

    MWPhotoBrowser 非常好用的图片浏览器 FDFullscreenPopGesture 用于全屏滑动切换视图 Aspects 用于快速AOP编程 AFNetworking iOS开发中最为火 ...

  7. 通过springmvc的RequestMapping的headers属性的使用

    直接上图: springmvc中可以通过@RequestMapping注解折配置headers属性,也就是通过headers属性来配置请求头信息,从而通过这个属性值来映射请求,因为不同浏览器的Acce ...

  8. [C++]Infinite House of Pancakes——Google Code Jam 2015 Qualification Round

    Problem It’s opening night at the opera, and your friend is the prima donna (the lead female singer) ...

  9. Python GUI开发环境的搭建

    原文:Python GUI开发环境的搭建 最近对Python的开发又来了兴趣,对于Python的开发一直停留在一个表面层的认识,玩的部分比较大. Python的入手简单,语法让人爱不释手,在网络通信方 ...

  10. mysqldump 利用rr隔离实现一致性备份

    mysqldump -p -S /data/mysqldata1/sock/mysql.sock --single-transaction --master-data=2 --database db1 ...