修改Oracle中的某一带有数据的列的数据类型

因为昨天去别的公司维护数据,到了之后导完数据才发现,表中的要素内容这一列是空的,刚开始我以为是数据有问题,后来才发现表中的数据的类型是CLOB类型的,而如果直接拿EXCLE中的数据是类型不匹配的,这时候就问了领导,领导说把CLOB类型改成varchar2类型的,不多说了上步骤:

因为该列中已经存有数据,所以需要如下:

*修改原字段名*/
ALTER TABLE 表名 RENAME COLUMN 字段名 TO 字段名1;
/*添加一个和原字段同名的字段*/
ALTER TABLE 表名 ADD 字段名  VARCHAR2(30);
/*
将原来的数据更新到新字段中
这是要注意,一定要显示进行数据类型转换(不同于MSSQL)
*/
UPDATE 表名 SET 字段名 = CAST(字段名1 AS VARCHAR2(30));
/*删除原来的备份字段*/
ALTER TABLE 表名 DROP COLUMN 字段名1;

时间: 2024-10-24 01:14:06

修改Oracle中的某一带有数据的列的数据类型的相关文章

Oracle中使用游标获取指定数据表的所有字段名对应的字符串

操作步骤:打开PLSQL Developer后,直接执行下面的语句就可以出来 --Oracle中使用游标获取指定数据表的所有字段名对应的字符串 declare mytablename VARCHAR(255):='STAFFDOC'; --定义要查询的数据表名变量,STAFFDOC为我测试用的数据表名,请修改成您的数据库中的对应数据表名字mystring NVARCHAR2(4000):=''; --定义要输出的字符串变量 cursor mycursor is --定义游标          s

oracle中导出导入表以及数据

Oracle数据导入导出imp/exp就相当于oracle数据还原与备份.exp命令可以把数据从远程数据库服务器导出到本地的dmp文件,imp命令可以把dmp文件从本地导入到远处的数据库服务器中.利用这个功能可以构建两个相同的数据库,一个用来测试,一个用来正式使用.执行环境:可以在SQLPLUS.EXE或者DOS(命令行)中执行,DOS中可以执行时由于 在oracle 8i 中安装目录\ora81\BIN被设置为全局路径,该目录下有EXP.EXE与IMP.EXE文件被用来执行导入导出.oracl

oracle中取前几条数据&TRUNC()函数

在oracle中查表中的前10条数据---- select * from test where rownum <= 10 ;  rownum是把SQL出来的结果进行编号,始终从1开始,常见的用途就是用来分页.类似于MYSQL和SQL SERVER的top. select * from (select a.*,rownum rn from test a) where rn >=10 and rn<=20; 输出10到20条语句.因为rownum本身只能用<=的比较方式,只有转成实例才

Oracle中varchar,varchar2,nvarchar,nvarchar2的区别及其它数据类型描述

--varchar,varchar2 联系: 1.varchar/varchar2用于存储可变长度的字符串 比如varchar(20),存入字符串'abc',则数据库中该字段只占3个字节,而不是20个字节 2.size 的最大值是 4000,而最小值是 1,其值表示字节数,比如 varchar(20)表示最大可以存放20个字节的内容 区别: 1.varchar2把所有字符都占两字节处理(一般情况下),varchar只对汉字和全角等字符占两字节,数字,英文字符等都是一个字节: 2.VARCHAR2

oracle中查询含字母的数据[正则表达式]

1,REGEXP_LIKE :与LIKE的功能相似2,REGEXP_INSTR :与INSTR的功能相似3,REGEXP_SUBSTR :与SUBSTR的功能相似4,REGEXP_REPLACE :与REPLACE的功能相似它们在用法上与Oracle SQL 函数LIKE.INSTR.SUBSTR 和REPLACE 用法相同,但是它们使用POSIX 正则表达式代替了老的百分号(%)和通配符(_)字符.POSIX 正则表达式由标准的元字符(metacharacters)所构成:'^' 匹配输入字符

恢复oracle中update或delete的数据

问题描述 比如在开发人员对employee表进行一个update语句,但更新完之后,才发现更新的语句有误,需要撤销刚才的update操作.如(update employee e set e.block='0300100011000000248' wheree.block='0300100011000000240'; 更新了10条数据) 1.如果在很短的时间内,可以查询数据库中的versions,记录短时间内的employee表中的update.delete.insert的操作.(时间多长取决于数

查询Oracle中字段名带&quot;.&quot;的数据

SDE中的TT_L线层会有SHAPE.LEN这样的字段,使用: SQL>select shape.len from tt_l; 或 SQL>select t.shape.len from tt_l t; 是查询不出来的. 需要这样查询: SQL>select t."SHAPE"."LEN" from tt_l t;

oracle对有数据的列进行数据类型变更的方法

两种方法: 方法一,通过备份表 1.建立备份表 create table t_bak as select * from t 2.删除原表数据后更改相应的列数据类型 delete from t 3.将备份表中的数据导入原表 insert into t select * from t_bak 4.删除备份表 方法二,通过备份列 1.修改原列名为col_tmp 2.建立备份列col(需要更改的数据类型且为可空) 3.将原列的数据更新到备份列 update t set col=trim(col_tmp)

oracle中clob字段怎么查询非空列_20180517

select * from uap_groupsynlogvo a where a.log_msg is not null and dbms_lob.getlength(log_msg) <> 0; 附加demo的建表脚本跟业务数据. 链接:https://pan.baidu.com/s/1HQ6O82-eKnAX0N6O-hAdyw 密码:gkjx 原文地址:https://www.cnblogs.com/zzzzw/p/9049312.html