精华内容
下载资源
问答
  • oracle修改字段类型
    千次阅读
    2022-01-12 15:38:39

    oracle修改字段类型及长度


    –改变类型及长度
    Alter Table tableName Add (new_name number(10));–新增加一个字段用作储存要改变类型及长度的值

    update tableName p set p.new_name=null;–设置增加字段为空

    update tableName set new_name = old_name;–把要改变的字段的值赋值到新加入的字段

    update tableName p set p.old_name=null;–设置要改变的字段为空

    alter table tableName modify(old_name number(10));–设置要改变的字段类型及长度

    update tableName set old_name = new_name;–把值重新迁移到原有字段中

    alter table tableName drop column new_name;–清除新增加的字段

    –改变长度(char转varchar–长度缩短)
    alter table tableName modify(col_name varchar(50));–改变字段类型值变大一点

    update tableName p set p.col_name=trim(p.col_name);–清除值中的空格
    alter table tableName modify(col_name varchar(20));–改变成自己想要的类型长度






    昨日已逝         明日未知
    更多相关内容
  • 最近学习了Oracle修改字段类型方法,留做记录。 有一个表名为tb,字段段名为name,数据类型nchar(20)。 1、假设字段数据为空,则不管改为什么字段类型,可以直接执行: alter table tb modify (name nvarchar2(20...
  • Oracle 修改字段类型

    千次阅读 2021-03-09 17:04:05
    修改 Oracle 表中字段类型,在该字段存在值的情况下,会提示:ORA-01439:要更改数据类型,则要修改的列必须为空 这时就需要区分情况处理。 数据量比较小的时候,可以直接操作目标表。 重命名字段名,添加新字段,...

    修改 Oracle 表中字段类型,在该字段存在值的情况下,会提示:ORA-01439:要更改数据类型,则要修改的列必须为空

    这时就需要区分情况处理。

    1. 数据量比较小的时候,可以直接操作目标表。
      重命名字段名,添加新字段,复制原始字段数据,删除重命名字段。
    /* 表字段重命名 */
    ALTER TABLE table_name RENAME COLUMN column_name TO column_name_tmp;
    
    /* 新增原始字段同名字段 */
    ALTER TABLE table_name ADD column_name NUMBER(10,2);
    
    /* 将重命名字段数据更新到新增字段 */
    UPDATE table_name SET column_name = trim(column_name_tmp);
    
    /* 删除重命名字段 */
    ALTER TABLE table_name DROP COLUMN column_name_tmp;
    
    1. 如果数据量较大,比如这次遇到的情况5500万条数据,采用方法1更新字段数据要超过1小时。
      快捷操作就需要备份源表数据,修改字段名,从备份表插入数据。
    /* 备份数据,备份 table_name 表数据至 table_name_bak 表 */
    CREATE TABLE table_name_bak AS SELECT * FROM table_name;
    
    /* 清空目标表数据 */
    TRUNCATE TABLE table_name;
    
    /* 修改目标表字段类型 */
    ALTER TABLE table_name MODIFY(column_name NUMBER(10,2));
    
    --禁用索引
    ALTER INDEX INDEX_NAME UNUSABLE;
    
    /* 将备份表数据插入目标表 */
    INSERT INTO table_name
      (column_name1,
       column_name2,
       column_name3,
       ...)
      SELECT column_name1,
       column_name2,
       column_name3,
       ...
        FROM table_name_bak;
    
    /* 删除备份表 */
    DROP TABLE table_name_bak;
    
    --恢复索引
    ALTER INDEX INDEX_NAME REBUILD;
    
    --查看索引状态
    SELECT status FROM user_indexes WHERE index_name='INDEX_NAME';
    
    展开全文
  • Oracle修改字段类型和长度,oracle修改字段Oracle修改字段名alter table 表名 rename column 旧字段名 to 新字段名Oracle修改字段类型和长度alter table 表名 modify 字段名 数据类型如果是修改数据类型比如由...

    Oracle修改字段类型和长度,oracle修改字段

    Oracle修改字段名

    alter table 表名 rename column 旧字段名 to 新字段名

    Oracle修改字段类型和长度

    alter table 表名 modify 字段名 数据类型如果是修改数据类型比如由varchar2修改为int且字段内有值,会报如下错误

    解决方法参考:http://blog.csdn.net/itmyhome1990/article/details/8681206

    转载请注明出处:http://blog.csdn.net/itmyhome1990/article/details/38869647

    oracle 更改字段名, 字段长度的操作是什?

    使用rename关键字来实现字段名的修改:alter table 表名 rename column旧的字段名 to 新的字段名名;

    使用modify关键字来实现对数据类型的修改:alter table 表名 modify 字段名 数据类型;

    oracle 已经建好的表怎更改字段大小?

    对二楼进行补充

    字段类型为

    如果想改小,没有数据可能直接用 alter table table_name modify column datatype;

    如果有数据,改小的话可以会丢失数据。

    比如:

    表:stu(name varchar2(20)) 要将字段name的长度改为10

    表中有一条数据:name(中国华西村刀光剑影) 长度超过10,截取的时候必然要丢失数据。

    当然 如果表中的数据长度都小于10,则可以用sql语句段来直接搞定。

    begin

    alter table stu add (name2 varchar2(10)); 增加新字段

    update stu set name2=substr(trim(name),1,10); 赋值给新字段

    alter table stu drop(name); 删除原字段

    alter table stu rename column name2 to name; 将新字段改名

    end;

    http://www.htsjk.com/shujukunews/2937.html

    www.htsjk.Com

    true

    http://www.htsjk.com/shujukunews/2937.html

    NewsArticle

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

    本站文章为和通数据库网友分享或者投稿,欢迎任何形式的转载,但请务必注明出处.

    同时文章内容如有侵犯了您的权益,请联系QQ:970679559,我们会在尽快处理。

    展开全文
  • 如果直接修改字段类型为NUMBER(22,8),会提示 在行: 4 上开始执行命令时出错 - alter table ar_gatheritem modify NOUTPUTVALUEMNY NUMBER(22,8) 错误报告 - ORA-01440: 要减小精度或标度, 则要修改的列必须为空 ...

    在工作中,有遇到金额的字段没有设置小数位(精度)的情况,致使金额保存的时候自动四舍五入,明明是100.5元,最后保存在表中却变成101(当初也不知道自己怎么智障的没有设置字段精度)。

    查看字段类型

    在这里插入图片描述
    如果直接修改字段类型为NUMBER(22,8),会提示

    在行: 4 上开始执行命令时出错 -
    alter table ar_gatheritem modify NOUTPUTVALUEMNY NUMBER(22,8)
    错误报告 -
    ORA-01440: 要减小精度或标度, 则要修改的列必须为空
    01440. 00000 -  "column to be modified must be empty to decrease precision or scale"
    *Cause:    
    *Action:
    

    原本想先把字段的值复制到备用字段,然后情况NOUTPUTVALUEMNY 的值,再修改数据,再把原来的值复制回来。但是查资料有说如果修改后的字段类型和修改前的字段类型是兼容的,是可以不用清空就可以直接修改类型的。

    由 NUMBER(22,0) => NUMBER(22,8),整形的添加精度应该是可以的呀?

    然后我突然意识到,NUMBER()的第一个参数是指整数位+小数位的总长度,如果改为NUMBER(22,8),那岂不是修改后的字段的整数位长度变成22-8=14,相比原来的22位变小了,所以正确的字段类型应该是NUMBER(30,8),这样才能保证整数长度为22不变。

    alter table ar_gatheritem modify NOUTPUTVALUEMNY NUMBER(30,8);
    

    在这里插入图片描述

    完毕(此仅供参考)!

    展开全文
  • 模拟情景,表:batchintfloadlog,要修改字段:resultinfo,字段 从原来的 varchar2 修改为clob1、假设要修改字段数值为空,则可以直接修改;​可是发现如下错误:​SQL> alter​tablebatchintfloadlogmodify ...
  • 1、假设字段数据为空,则不管改为什么字段类型,可以直接执行! 2、假设字段有数据,执行时会弹出:“ORA-01439:要更改数据类型,则要修改的列必须为空”,这时要用下面方法来解决这个问题: //修改原字段名 第一步 ...
  • 1、假设字段数据为空,则不管改为什么字段类型,可以直接执行: alter table tb modify (name nvarchar2(20)); 2、假设字段有数据,则改为nvarchar2(20)可以直接执行: alter table tb modify (name nvarchar2(20));...
  • oracle修改字段类型,从number(2)改为number(2,1)今天下午,自己做东西时,发现个小问题,当时建立数据表的时候,把course的course_credit字段建为了number(2)型,这导致了输入类似于:4.5时,精度丢失,打算改表字...
  • Oracle 修改字段类型(varchar2-->clob)

    千次阅读 2021-11-03 13:48:44
    本来该字段使用varchar2(4000),但还是长度不够,需要修改字段类型为clob 1.开始尝试直接把varchar2修改为clob alter table sys_user modify note clob; 提示:数据类型变更无效!!! 原因:修改的当前字段有值 2...
  • oracle修改user表字段name类型时遇到报错:“ORA-01439:要更改数据类型,则要修改的列必须为空”,是因为要修改字段的新类型和原来的类型不兼容。 如果要修改的字段数据为空时,则不会报这种类型的错误,可以进行...
  • 修改字段类型为clob类型。(增加clob临时字段->复制原字段值->删除原字段->修改临时字段名为原字段名)执行命令:alter table BG_CONTRACT_INFO modify BG_EXPLAIN CLOB;oracle版本问题,即使没数据也会...
  • 修改字段类型时,当这个字段中有数据时,就会出现这个错误,再建一列然后将数据同步到该列,再修改字段即可 alter table OA_KSZX_CGGL_H add BASFBJ_BAK varchar2(40);-- 添加临时列 update OA_KSZX_CGGL_H set ...
  • Oracle修改字段类型

    2015-10-26 16:03:56
     ...1、假设字段数据为空,则不管改为什么字段类型,可以直接执行: alter table t1 modify (deptno varchar2(20)); 2、假设字段有数据,则改为varchar2(20)执行时会弹出错误: ERROR at
  • Oracle表中已有数据修改字段类型

    千次阅读 2022-05-11 15:46:11
    Oracle的表中已存在了数据,这时再来修改表的字段类型就无法...备份原表数据,清除表数据,修改字段类型,还原数据 // 1.创建备份表 create table test_bak as select * from test; // 2.清除原表数据 truncate table
  • Oracle 修改字段类型和长度

    千次阅读 2015-11-25 09:37:36
    转自:... 标准SQL修改字段类型和长度语句: ALTER TABLE tableName modify column columnName 类型; 例如Mysql的修改字段类型语句: alter table test modify column n
  • oracle修改字段类型

    千次阅读 2017-03-11 13:02:41
    1、假设字段数据为空,则不管改为什么字段类型,可以直接执行: alter table tb modify (name nvarchar2(20)); 2、假设字段有数据,则改为nvarchar2(20)可以直接执行: alter table tb modify (name nvarchar2...
  • 以下的文章主要是就介绍Oracle使用SQL语句如何修改字段类型的实际操作,本文是以假设相关表中没有数据的方式来引出Oracle使用SQL语句修改字段类型的相关操作,以下就是具体方案的描述。如果表中没有数据:直接这样就...
  • Oracle修改字段类型和长度

    万次阅读 多人点赞 2014-08-28 21:43:16
    Oracle修改字段名alter table 表名 rename column 旧字段名 to 新字段名
  • Oracle修改字段数据类型

    万次阅读 2019-03-08 09:53:22
    1、假设字段数据为空,则不管改为什么字段类型,都可以直接执行,比如改为数值类型: alter table tb modify (name NUMBER (16,2)); 2、假设字段有数据,若新类型和原类型兼容,则可以直接执行: alter table tb ...
  • 1、假设字段数据为空,则不管改为什么字段类型,可以直接执行: alter table tb modify (name nvarchar2(20)); Oracle数据库中 comment (注释) 修改方法:字段注释。 comment on column 表名.字段名 is '...
  • [Oracle基础]Oracle修改字段类型

    千次阅读 2018-06-06 16:43:01
    随着业务变更,对原有表就需要稍有变更去适配新的业务场景,增加字段、字段重命名、增加字段约束、修改字段类型等操作就无可避免了,本文的所有操作都经过测试。 假设,已有表名(tb),字段名(field1 VARCHAR2(4)...
  • oracle修改字段的sql语句 - Oracle

    千次阅读 2020-11-11 21:33:36
    1、添加字段 create table ORD ( table_name type, UserName VARCHAR2(30), CUST_ID NUMBER(4) ...3、修改字段 alter table table_name modify (column_name type); 添加字段非空限制报错 O

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 128,091
精华内容 51,236
关键字:

oracle修改字段类型

友情链接: 论文模型.zip