在Oracle资料中,怎么将VARCHAR2转化为NUMBER?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Oracle资料中,怎么将VARCHAR2转化为NUMBER?相关的知识,希望对你有一定的参考价值。
参考技术A 在Oracle资料中,怎么将VARCHAR2转化为NUMBER?修改表字段数值型别:eg:create table haha_info(remark varchar2(10));-->alter table haha_info modify remark number(2,2);
把字元型转换成数值型:select to_number(t.remark) from haha_info t;
希望可以帮到你~~~
SQL语句VARCHAR2型别转化为NUMBER型别,该怎么解决
SELECT TO_NUMBER('1254875') FROM DUAL;
不过varchar值中必须全是数字的
怎么把mysql资料转化为oracle
1.修改资料库连线字串:
如:
驱动器.mysql.jdbc.Driver 改为 oracle.jdbc.driver.OracleDriver
连线字串jdbc:mysql:localhost:3306/xxx 改为 jdbc:oracle:thin:@localhost:1521:sid
2.调整SQL语句:
如:
分页查询SELECT * FROM TABLE_NAME LIMIT 1, 20 改为 SELECT * FROM (SELECT A.*, ROWNUM RN FROM (SELECT * FROM TABLE_NAME) A WHERE ROWNUM <= 20) WHERE RN >= 1
3.将mysql库中的资料汇入到oracle库:
可以手工进行,如将mysql中的资料转储为sql文,作下调整,在oracle中执行;
建议使用相关工具,如Oracle SQL Developer。
4.将连线资料库的jar包换成oracle的。
Oracle怎样把varchar2型转成number型
oracle中纯数字的varchar2型别和number型别自动转换:
比如:
两个表的栏位定义了不同的型别。一个栏位是varchar2型别,另一个栏位是number型别,内容如下:'00187'和187。在使用中发现会自动将varchar2型别转换为number,即187和187。
测试的sql:
select
case when '0110' = 110 then
'true'
else
'false'
end
from dual;
------------
select
case when to_number('0110') = to_number(110) then
'true'
else
'false'
end
from dual;
结论:结果都是true。为了保险起见还是用to_number()进行转换更好一些。
1、Converts a string to the NUMBER data type(将字串转换为数字资料型别)
TO_NUMBER(<value>[, <format>, <NLS parameter>]) RETURN NUMBER
select to_number('00001228') from dual;
2、Converts a HEX number to FLOAT(转换一个十六进位制数的浮标)
TO_NUMBER(<value>, <format>);
SELECT TO_NUMBER('0A', 'XX') FROM dual;
3、Converts a HEX number to DECIMAL(一个十六进位制数转换为十进位制)
TO_NUMBER(<binary_float | binary_double | number>,
'<hex mask>') RETURN <binary_float | binary_double | number>;
SELECT TO_NUMBER(100000,'XXXXXXXX') FROM dual;
收下varchar2中存的必须要是数字,否则转换会失败
直接用to_number即可
如
select to_number('100') from dual;
oracle数据库之如何将blob类型转换为varchar2
参考技术A 本文将给大家讲解关于oracle数据库blob类型如何转换为varchar2 : 据说没有数据的时候可以直接转换,试过了也可以,但是一般都是由数据了才会去修改,麻烦产生,直接修改不了,只能通过函数来解决;总的思路是:创建临时字段B→将要转换的字段A放在临时字段中(使用函数转换)→删除A→将B名称改为A创建转换函数create or replace FUNCTION blob_to_varchar (blob_in IN BLOB)RETURN VARCHAR2ISv_varchar VARCHAR2(2000);v_start PLS_INTEGER := 1;v_buffer PLS_INTEGER := 2000;BEGINif DBMS_LOB.GETLENGTH(blob_in) is null thenreturn empty_clob();end if;DBMS_OUTPUT.put_line('TEST:' || CEIL(DBMS_LOB.GETLENGTH(blob_in)));FOR i IN 1..CEIL(DBMS_LOB.GETLENGTH(blob_in) / v_buffer)LOOPv_varchar := UTL_RAW.CAST_TO_VARCHAR2(utl_raw.convert(DBMS_LOB.SUBSTR(blob_in, v_buffer, v_start),'AMERICAN_THE NETHERLANDS.UTF8', 'AMERICAN_THE NETHERLANDS.UTF8'));v_start := v_start + v_buffer;END LOOP;RETURN v_varchar;end blob_to_varchar;开始修改表数据:ALTER TABLE requestion ADD INTRODUCE_TEMP VARCHAR2(2000);UPDATE requestion SET INTRODUCE_TEMP=blob_to_varchar(INTRODUCE);ALTER TABLE requestion DROP COLUMN INTRODUCE;ALTER TABLE requestion RENAME COLUMN INTRODUCE_TEMP TO INTRODUCE;Drop FUNCTION blob_to_varchar;这个过程中可能会出现乱码问题,需要调整下编码当然,如果blob转换成varchar的函数还需要的话就不要删除了以上是关于在Oracle资料中,怎么将VARCHAR2转化为NUMBER?的主要内容,如果未能解决你的问题,请参考以下文章
交叉报表列头排序时遇到的oracle问题—oracle ORA-12704:字符集不匹配varchar2转化为nvarchar2字符缺失case when else后的字符类型要一致