Oracle怎样把varchar2型转成number型
发布网友
发布时间:2022-04-23 02:46
我来回答
共4个回答
懂视网
时间:2022-04-29 23:50
使用过一个关联查询,两个表的字段定义了不同的类型。一个字段是varchar2类型,另一个字段是number类型,内容如下:‘00187‘和187。在使用中发现会自动将varchar2类型转换为number,即187和187。
效果与to_number()一样。
专门写了两个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()进行转换更好一些。
ORACLE-012:oracle中纯数字的varchar2类型和number类型自动转换
标签:
热心网友
时间:2022-04-29 20:58
oracle中纯数字的varchar2类型和number类型自动转换:
比如:
两个表的字段定义了不同的类型。一个字段是varchar2类型,另一个字段是number类型,内容如下:'00187'和187。在使用中发现会自动将varchar2类型转换为number,即187和187。
测试的sql:
select
case when '0110' = 110 then
'true'
else
'false'
end
from al;
------------
select
case when to_number('0110') = to_number(110) then
'true'
else
'false'
end
from al;
结论:结果都是true。为了保险起见还是用to_number()进行转换更好一些。
热心网友
时间:2022-04-29 22:16
用to_number函数。
但前提是varchar2中存放的数据必须是数字型字符。
如存放的是类似123 或者 1.23等可以to_number(123)或to_number(1.23)
如果存放其他字符,则会报错
热心网友
时间:2022-04-29 23:51
1、如果只是查询的时候转换,只要加to_number 函数就可以了。
2、如果想修改表的字段类型,直接修改会报错:
ORA-01439: 要更改数据类型, 则要修改的列必须为空
解决方法参考下面的知道链接:
http://zhidao.baidu.com/link?url=VOj5m4F2Xd1iP1EdT8TTxQsX7Uah7Bc6oPpeFlAL1_rRhBkRTQQ-eTc2Xoc_GacssB9dM8ZqEmSKT86E6g1sR_
3、还有一种解决办法是使用虚拟列,不需要删掉原来的字段。例如:
alter table t add (numCol as (to_number(varCol))) ;
需要11g支持,需要保证字段里面数据库的规范性。(需要提前修改一下源字段的名称)