Oracle怎样把varchar2型转成number型
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle怎样把varchar2型转成number型相关的知识,希望对你有一定的参考价值。
使用函数:to_number即可转型。
前提条件是varchar2中存放的数据必须是数字字符,否则在转换过程中会报错。
Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。
可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小微机环境。它是一种高效率的、可靠性好的、适应高吞吐量的数据库方案。
从就业与择业的角度来讲,计算机相关专业的大学生从事oracle方面的技术是职业发展中的最佳选择。
其一、就业面广:ORACLE帮助拓展技术人员择业的广度,全球前100强企业99家都在使用ORACLE相关技术,中国政府机构,大中型企事业单位都能有ORACLE技术的工程师岗位。
大学生在校期间兴趣广泛,每个人兴趣特长各异,不论你想进入金融行业还是电信行业或者政府机构,ORACLE都能够在你的职业发展中给你最强有力的支撑,成为你最贴身的金饭碗。
其二、技术层次深:如果期望进入IT服务或者产品公司(类似毕博、DELL、IBM等),Oracle技术能够帮助提高就业的深度。
Oracle技术已经成为全球每个IT公司必选的软件技术之一,熟练掌握Oracle技术能够为从业人员带来技术应用上的优势,同时为IT技术的深入应用起到非常 关键的作用。掌握 Oracle技术,是IT从业人员了解全面信息化整体解决方案的基础。
其三、职业方向多:Oracle数据库管理方向、Oracle开发及系统架构方向、Oracle数据建模数据仓库等方向。
以上内容参考 百度百科——Oracle数据库
参考技术A使用函数:to_number即可转型。
Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小微机环境。
ORACLE
数据库被划分成称作为表空间的逻辑区域——形成ORACLE数据库的逻辑结构。一个ORACLE数据库能够有一个或多个表空间,而一个表空间则对应着一个或多个物理的数据库文件。表空间是ORACLE数据库恢复的最小单位,容纳着许多数据库实体,如表、视图、索引、聚簇、回退段和临时段等。
以上内容参考:百度百科-Oracle表空间
参考技术Bvarchar2型转成number型的前提条件是varchar2中存放的数据必须是数字字符,否则在转换过程中会报错。
使用函数:to_number
具体方法:
select to_number('100.10') from dual;结果:
oracle中把varchar2转成number类型的方法是用to_number函数来完成,使用TO_NUMBER函数将字符转换为数字,To_number函数的格式如下:TO_NUMBER(char[, '格式'])。
varchar2型转成number型的前提条件是varchar2中存放的数据必须是数字字符,否则在转换过程中会报错。
使用函数:to_number
具体方法:select to_number('100.10') from dual;
结果:
Oracle中表列由VARCHAR2类型改成CLOB
情景
原来表中的列定义成VARCHAR2类型,众所周知,VARCHAR2类型最大支持长度为4000。假设因为业务须要。想把此列转换为CLOB类型,在Oracle中直接通过ALTER语句转换是行不通的。以下依据详细事例解说在Oracle数据库中怎样把表列由VARCHAR2类型转换为CLOB类型。
演示样例准备
1. 新建两张张表TB_WITHOUT_DATA(此VARCHAR2列不包括数据)和TB_WITH_DATA(此Varchar2列包括数据)
create table TB_WITHOUT_DATA ( id NUMBER, name VARCHAR2(100), description VARCHAR2(2000) );
create table TB_WITH_DATA ( id NUMBER, name VARCHAR2(100), description VARCHAR2(2000) ); insert into TB_WITH_DATA VALUES (1,'David Louis','He is capable of resolving such kind of issue'); insert into TB_WITH_DATA VALUES (2,'German Noemi','She is very beatiful and charming'); insert into TB_WITH_DATA VALUES (3,'Oliver Queen','He is main actor in the Green Arrow'); insert into TB_WITH_DATA VALUES (4,'Mark Williams','He plays snooker very well'); insert into TB_WITH_DATA VALUES (5,'Sita Rama Raju Kata','I do not know this guy'); insert into TB_WITH_DATA VALUES (6,'Promethus','This is a very nice movie'); commit;
错误方法
ALTER TABLE TB_WITHOUT_DATA MODIFY description clob;错误信息:
SQL Error: ORA-22858: invalid alteration of datatype
22858. 00000 - "invalid alteration of datatype"
*Cause: An attempt was made to modify the column type to object, REF,
nested table, VARRAY or LOB type.
*Action: Create a new column of the desired type and copy the current
column data to the new type using the appropriate type
constructor.
解决方法
方法一:对于此列没有数据的可通过下面方法改动-首先把该列改成Long类型,然后再改成clob类型
alter table TB_WITHOUT_DATA modify description long;--首先改成Long类型 alter table TB_WITHOUT_DATA modify description clob;--在Long类型的基础上改成clob类型
注:对于此列已经存在数据的。不能通过此方法。否则会报例如以下错误:
alter table TB_WITH_DATA modify description long;--更改包括数据的列
SQL Error: ORA-01439: column to be modified must be empty to change datatype 01439. 00000 - "column to be modified must be empty to change datatype"
方法二:此方法适合此列包括数据和此列不包括数据两种情况
步骤一:把原来表中该列重命名
alter table TB_WITHOUT_DATA rename column description to description_bak; alter table TB_WITH_DATA rename column description to description_bak;
步骤二:在表中添加该列,并指定改列类型为clob
alter table TB_WITHOUT_DATA add description clob; alter table TB_WITH_DATA add description clob;
步骤三:对此列包括数据的须要包数据从步骤一重命名列中拷出(对于此列没有数据的此步骤省略)
update TB_WITH_DATA set description=description_bak; commit;
步骤四:删除步骤一中的备份列
alter table TB_WITHOUT_DATA drop column description_bak; alter table TB_WITH_DATA drop column description_bak;
步骤五:验证
1) 表结构验证
DESC TB_WITHOUT_DATA Name Null Type ----------- ---- ------------- ID NUMBER NAME VARCHAR2(100) DESCRIPTION CLOB
DESC TB_WITH_DATA Name Null Type ----------- ---- ------------- ID NUMBER NAME VARCHAR2(100) DESCRIPTION CLOB2) 数据验证
select * from TB_WITH_DATA; ID NAME DESCRIPTION ---------- -------------------------- ------------------------------------------------ 1 David Louis He is capable of resolving such kind of issue 2 German Noemi She is very beatiful and charming 3 Oliver Queen He is main actor in the Green Arrow 4 Mark Williams He plays snooker very well 5 Sita Rama Raju Kata I do not know this guy 6 Promethus This is a very nice movie 6 rows selected
方法三:此方法适合此列包括数据和此列不包括数据两种情况
在解说方法三之前,须要包表恢复到准备阶段,因为时间关系,直接通过drop然后re-create方法,脚本例如以下:
drop table TB_WITHOUT_DATA; drop table TB_WITH_DATA; create table TB_WITHOUT_DATA ( id NUMBER, name VARCHAR2(100), description VARCHAR2(2000) ); create table TB_WITH_DATA ( id NUMBER, name VARCHAR2(100), description VARCHAR2(2000) ); insert into TB_WITH_DATA VALUES (1,'David Louis','He is capable of resolving such kind of issue'); insert into TB_WITH_DATA VALUES (2,'German Noemi','She is very beatiful and charming'); insert into TB_WITH_DATA VALUES (3,'Oliver Queen','He is main actor in the Green Arrow'); insert into TB_WITH_DATA VALUES (4,'Mark Williams','He plays snooker very well'); insert into TB_WITH_DATA VALUES (5,'Sita Rama Raju Kata','I do not know this guy'); insert into TB_WITH_DATA VALUES (6,'Promethus','This is a very nice movie'); commit;
步骤一:重命名两张表
rename TB_WITHOUT_DATA to TB_WITHOUT_DATA_BAK; rename TB_WITH_DATA to TB_WITH_DATA_BAK;
步骤二:创建两张新表(通过下面语句创建两张表)
create table TB_WITHOUT_DATA as select id, name, to_clob(description) description from TB_WITHOUT_DATA_BAK; create table TB_WITH_DATA as select id, name, to_clob(description) description from TB_WITH_DATA_BAK;
表结构与数据验证:
desc TB_WITHOUT_DATA Name Null Type ----------- ---- ------------- ID NUMBER NAME VARCHAR2(100) DESCRIPTION CLOB desc TB_WITH_DATA Name Null Type ----------- ---- ------------- ID NUMBER NAME VARCHAR2(100) DESCRIPTION CLOB select * from TB_WITH_DATA; select * from TB_WITH_DATA; ID NAME DESCRIPTION ---------- -------------------------- ------------------------------------------------ 1 David Louis He is capable of resolving such kind of issue 2 German Noemi She is very beatiful and charming 3 Oliver Queen He is main actor in the Green Arrow 4 Mark Williams He plays snooker very well 5 Sita Rama Raju Kata I do not know this guy 6 Promethus This is a very nice movie 6 rows selected
步骤三:删除备份表:
DROP TABLE TB_WITHOUT_DATA_BAK; DROP TABLE TB_WITH_DATA_BAK;
-----------------------------------------------------------------------------------------------------------------------------------------------------------
假设您们在尝试的过程中遇到什么问题或者我的代码有错误的地方。请给予指正。很感谢!
联系方式:[email protected]
版权@:转载请标明出处。以上是关于Oracle怎样把varchar2型转成number型的主要内容,如果未能解决你的问题,请参考以下文章