精华内容
下载资源
问答
  • --select 'alter table '||table_name||' modify jiluleixing VARCHAR2(50); ' from user_tables where table_name LIKE '%RIZHI%';
    --select  'alter table '||table_name||' modify jiluleixing VARCHAR2(50); ' from user_tables where table_name LIKE '%RIZHI%'; 
    
    展开全文
  • 解析如何查看Oracle数据库某张表的字段个数 电脑资料 Oracle中查询某个表的总字段数要用SQL语句或者在PL/SQL里面 复制代码代码如下: select count(column_name) from user_tab_columns where table_name='T_B_...
  • 最近项目中有这样一个变动,需要修改数据库中某个字段类型。但是,表中已经存在大量数据了。DML句:"alter table 表名 modify 字段名 新数据类型 " 只对空表起作用,当存在数据时,不允许修改。  下面介绍两种不...

      最近项目中有这样一个变动,需要修改数据库中某个字段类型。但是,表中已经存在大量数据了。DML句:"alter table 表名 modify 字段名  新数据类型 " 只对空表起作用,当存在数据时,不允许修改。

         下面介绍两种不删除数据,更改数据类型的操作方法。

          首先,我们先熟悉alter对字段的各种操作,后面会用得到。

    对字段操作

    操作方法

    更新字段名

    alter table TABLE_NAME rename column column_old to column_new;

    添加字段

    alter table TABLE_NAME add COLUMN_NAME varchar(10);

    删除字段

    alter table TABLE_NAME drop column COLUMN_NAME;

    添加字段并附值

    alter table TABLE_NAME ADD COLUMN_NAME NUMBER(1) DEFAULT 1;

    修改字段值

    update TABLE_NAME set filedname=value where filedname=value;

    修改字段数据类型

    alter table tablename modify filedname varchar2(20);

            例如,下面要将fraction的double类型修改为float类型

    方法一:

               (1) 添加一个新字段 newfield,数据类型设置为新数据类型

               (2) 将要修改字段的值复制到刚添加的列中 oldfield—newfield

               (3) 删除原来字段oldfield

               (4) 重命名newfield

    1. alter table test add fraction_temp float  
    2. update test set fraction_temp =fraction  
    3. alter table test drop column fraction  
    4. span style="white-space:pre">   </span>alter table test rename column fraction_temp to fraction  

           方法二:

               (1) 添加一个临时字段 field_temp,数据类型设置为新数据类型

               (2) 将要修改字段的值复制到刚添加的临时列中 oldfield——field_temp,清空原来字段oldfield值

               (3) 修改oldfield的数据类型

               (4) 将值从临时字段中拷贝回来

       (5) 清空临时字段值,删除临时字段

               

    1.     alter table test add fraction_temp float  
    2.     update test set fraction_temp=fraction,fraction=null  
    3.     alter table test modify fraction float  
    4.     update test set fraction=fraction_temp,fraction_temp=null  
    5. <span style="white-space:pre">  </span>alter table test drop column fraction_temp  

           第二种方法通过中间字段来操作,虽然步骤多了一步,但是可以避免第一种方法导致的字段位置变动,不过位置变动也没有什么大的影响吧。

          其实,发现还有更简单的方法,数据库客户端支持粘贴复制功能,你可以打开两个客户端,保证一个客户端显示着表中的所有数据,同时从另一个客户端中删除数据,修改数据类型后,再从还保留着数据的客户端中将数据粘过来。

    展开全文
  • oracle 修改已有数据的字段类型

    千次阅读 2018-04-20 11:34:58
    现在我的需求是:有个地方...先需要修改数据库中表字段类型.在网上找到了两个传值方式,cast方式没有测试./*修改原字段名name为name_tmp*/alter table tablename rename column name to name_tmp;/*增加一个和原字...

    现在我的需求是:有个地方数据库中某个表的字段和model类中的实体类的字段不一致,

    数据库中为number,实体类中为String.操作实体类保存报错.先需要修改数据库中表的字段类型.

    在网上找到了两个传值方式,cast方式没有测试.


    /*修改原字段名name为name_tmp*/

    alter table tablename rename column name to name_tmp;


    /*增加一个和原字段名同名的字段name*/
    alter table tablename add name nvarchar2(20);


    /* 方式一:将原字段name_tmp数据更新到增加的字段name 一定要显示进行数据类型转换*/
    update tablename set name=CAST(name_tmp AS nvarchar2(20));
    /*方式二:*/
    update tablename set name =trim(name_tmp );


    /*提交数据*/

    commit;


    /*更新完,删除原字段name_tmp*/
    alter table tablename  drop column name_tmp;
    展开全文
  • 最近在做项目中用到Clob这个字段,Clob是存储无限长字符的Oracle字段,用的时候... 第一种方案很简单,是数据库表中某个字段是Clob类型,需要对这个表进行增加修改,网上有很多版本,我试了一种最简单的:  n...

    最近在做项目中用到Clob这个字段,Clob是存储无限长字符的Oracle字段,用的时候网上找资料找了好久,内容不是很多,大部分都不能用,当然也有可以用的,测试了不同版本,整理了一下,给大家在做项目的时候以参考。

    表操作

      第一种方案很简单,是数据库表中的某个字段是Clob类型,需要对这个表进行增加修改,网上有很多版本,我试了一种最简单的:

        new OracleParameter(":Test", OracleType.Clob,System.Text.Encoding.Unicode.GetByteCount(model.Test)),

     

      就是在创建参数的时候指定一个长度,为什么这样写,不是很清楚,我试过超过4000字符存储和修改是没什么问题的。下面给参数赋值直接赋值就行了,就那么简单!

    参数操作

      第一种是对表中Clob的操作,还有一种情况是,在Oracle中定义的存储过程和函数,参数的类型是Clob类型,如果用第一种方式的话就会报错,字符超过最大,我想是虽然参数类型是Clob但是传过去的是字符,Oracle默认应该是把传过来的值当做字符看待了,第一种不行,就找了另一种实现方法,我们看下:

    复制代码
            public static OracleLob GetOracleClob(string strValue)
            {
                using (OracleConnection connection = new OracleConnection(connectionString))
                {
                    try
                    {
                        connection.Open();
                        string str = strValue;
                        byte[] array = Encoding.Unicode.GetBytes(str);
                        if (array.Length % 2 != 0)
                        {
                            array = Encoding.Unicode.GetBytes(str + ' ');
                        }
                        OracleCommand lobCmd = connection.CreateCommand();
                        // 为访问表定义一个游标 clobvar
                        string cmdSql = "DECLARE clobvar CLOB;";
                        cmdSql += " begin ";
                        cmdSql += " dbms_lob.createtemporary(clobvar, false, 0); :tempLob:= clobvar; ";
                        cmdSql += " end;";
                        lobCmd.CommandText = cmdSql;
                        lobCmd.Parameters.Add(new OracleParameter("tempLob", OracleType.Clob)).Direction = ParameterDirection.Output;
                        lobCmd.ExecuteNonQuery();
    
                        // 利用事务处理(必须)
                        OracleTransaction tx = connection.BeginTransaction();
                        lobCmd.Transaction = tx;
    
                        // 定义一个临时变量
                        OracleLob tempLob = (OracleLob)lobCmd.Parameters["tempLob"].Value;
                        tempLob.BeginBatch(OracleLobOpenMode.ReadWrite);
                        tempLob.Write(array, 0, array.Length);
                        tempLob.EndBatch();
                        // 提交事务
                        tx.Commit();
                        return tempLob;
                    }
                    catch (Exception e)
                    {
                        throw e;
                    }
                }
            }
    复制代码

      调用:

                parameters[0].Value = DbHelperOra.GetOracleClob(TestString);

      大家看代码可能明白一些,这里我说下自己的理解,先定义一个Byte,然后拼一个输出Clob类型的字符串,在Oracle执行后输出,然后把Byte写入输出的Clob变量,然后提交事务,我觉得得到的这个Clob类型才是真正的Clob类型,是和Oracle那边是一致的。这边有一个重要的是字符的编码,注意下要和Oracle那边要一致!


    本文转自田园里的蟋蟀博客园博客,原文链接:http://www.cnblogs.com/xishuai/p/3469871.html,如需转载请自行联系原作者

    展开全文
  • Oracle类型修改

    2016-02-29 17:16:12
    在实际开发中,遇到需要修改Oracle某个字段类型的时候,如果只是原字段增加长度可以修改,但是如果是字段调整类型,则会报图上的错误。 这个时候,可以通过将表中的数据移到一张临时表,然后修改类型后再调整...
  • 偶尔我们需要在已有表,并且有数据的情况下,修改某个字段类型或缩短他的长度,但是因为表中有数据,所以不可以直接修改,需要换个思路。 //建立测试表,可跳过(善于应用各种系统功能组合,来实现日常工作需要...
  • oracle+mybatis查询遇到CHAR类型字段

    千次阅读 2018-07-31 14:57:08
    某一张A的某个字段B的类型为CHAR(4),往A插入一条数据,B字段的值为1,表面上(肉眼)看到B的值为1,但实际上为1加3个空格,会出现如下问题:mybatis的sql中用B字段去做查询条件 B='1'时查不到数据,但直接在...
  • 一、结构 1、创建 2、增加列 ...约束的概念:就是对某个字段中的值的控制【constraint约束】 1、非空约束Not Null 限定种某些值不能为空的约束 第一种写法:create table stu2(sid number...
  • 批量修改CLOB字段数据

    2021-03-03 19:03:41
    需求:表中某个字段的存储sql口径,但是数据导入到新的库后,schema没有改过来,需要批量修改。 DBMS.GETLENGTH可以获取CLOB类型的长度,DBMS.SUBSTR(字段名,偏移量,起点)可以将CLOB转为字符串,但是当截取的长度...
  • oracle常用语句

    2017-09-05 11:37:11
    1.为某个表添加字段 alter table tb add ( SYSTEM_NAME varchar2(32) ); comment on column tb.SYSTEM_NAME is ‘系统名称...2.修改表中字段类型 alter table tb modify (SYSTEM_ID VARCHAR2(15)); 待补充—
  • oracle数据库常用SQL

    2012-05-10 10:11:00
    删除数据库某个表中的一列 alter table tablename drop clumn clumnname; 因为需求的变更,所以,有要对数据库中的一些字段进行修改.查了下网络上在资料,字段名称是无法修改的.唯一的办法,就是删了再添加. 如何...
  • 说明: 指定一个字符串值, 设置 TIME 数据类型的默认值, 该数据类型包含 HOUR, MINUTE 和 SECOND 这几个日期时间字段。 语法: TIME '09:26:50' (将值存储为 7 个字节)。 默认值: 从 NLS_TERRITORY 获得 nls_time...
  • oracle实验报告

    2019-01-10 19:29:58
    2、 定义一个为修改职工表(emp)中某职工工资的存储过程子程序,职工名作为形参,若该职工名在职工表中查找不到,就在屏幕上提示“查无此人”然后结束子程序的执行;否则若工种为MANAGER的,则工资加$1000;工种为...
  • Oracle事例

    2007-08-26 10:35:53
    当指定时,如果父表中的记录被删除,则依赖于父表的记录也被删除 REFERENCE 表名() on delete cascade; 7、删除带约束的表 Drop table 表名 cascade constraints; 8:索引管理 <1>.creating function-based...
  • oracle数据库经典题目

    2011-02-17 15:05:20
    13. 用_____语句修改表的一行或多行数据。( A ) A.Update B.set C.Select D.Where 14. 使用什么命令可以清除表中所有的内容? ( D ) A.INSERT B.UPDATE C. DELETE D.TRUNCATE 15.关于模式的描述下列哪一项不...
  • 例:将test表中的Count列宽度加长为10个字符 sql>alter atble test modify (County char(10)); b、将一张表删除语句的格式如下: DORP TABLE 表名; 例:表删除将同时删除表的数据和表的定义 sql>drop table ...
  • 日期类型 date 7字节 用于存储表中的日期和时间数据,取值范围是公元前4712年1月1日至公元9999年12月31日,7个字节分别表示世纪、年、月、日、时、分和秒 二进制数据类型 row 1~2000字节 可变长二进制数据,在具体...
  • 使用mapxtreme7 开发时,使用Feature.Update()方法时出错的提示包含“MSSQL 将截断字符串或二进制数据” 主要原因就是给某个字段赋值时,内容大于字段的长度或类型不符造成的 解决方法: 一个是修改数据库字段大小;...
  • java.sql.SQLException: 流已被关闭

    千次阅读 2018-08-10 22:47:19
    解决:将我Oracle数据库某个字段类型为long的更改为number类型(中间修改,增加的字段,sql语句添加的时候用的Long类型,之前的都是创建的都是Number类型,然后由jpa生成pojo的时候转换为Long,所以遗漏了这...
  • 这个异常是指,用户向数据库执行插入数据操作时,某条数据的某个字段值过长,如果是varchar2类型的,当长度超过...但是将oracle数据库表中的varchar2类型直接改成clob类型会失败,解决办法如下:先修改成long类型 ...
  • orcale常用命令

    2009-08-04 00:34:59
    例:将test表中的Count列宽度加长为10个字符 sql>alter atble test modify (County char(10)); b、将一张表删除语句的格式如下: DORP TABLE 表名; 例:表删除将同时删除表的数据和表的定义 sql>drop table ...
  • 如果数据表中增加了字段或修改某个字段,需模型中需没有更改,只需把数据表同步到模型即可,不需要开发人员对照数据表结构来修改模型结构。 3)、代码生成 DataUml Desing采用代码模板来生成代码,软件开发...
  • 如果数据表中增加了字段或修改某个字段,需模型中需没有更改,只需把数据表同步到模型即可,不需要开发人员对照数据表结构来修改模型结构。 3)、代码生成 DataUml Desing采用代码模板来生成代码,软件开发...
  • │ 统计一个表中某个字符出现最多的字母.sql │ 非法字符串处理.sql │ ├─第04章 │ │ 4.1.5 在各种处理中应用排序规则的示例.sql │ │ 4.2.1 排序规则在拼音处理中的应用.sql │ │ 4.2.2 排序规则在全角与...

空空如也

空空如也

1 2 3
收藏数 55
精华内容 22
关键字:

修改表中某个字段类型oracle