日期:2014-05-16  浏览次数:20462 次

oracle to_number 无效数字

今天在执行一个sql语句时,发现一只报 无效数字

?

?

SELECT ddtime,dcprovince,dctffee,to_number(dctffee) FROM 
KS_OSS002 WHERE dntftype<>1 and ddtime>=TO_DATE('2012-02-14 00:00:00','yyyy-mm-dd hh24:mi:ss') AND ddtime<=TO_DATE('2012-02-14 09:59:59','yyyy-mm-dd hh24:mi:ss')
		and to_number(dctffee)>=0

?

?

如果where条件中的to_number(dctffee)去掉后,就不会报错。后来发现原来是数据库中 有条记录dctffee字段填写的是全角的数字,本来以为 只要select 中的?to_number(dctffee)能出来就说明没有问题了,其实 如果没有最后的 to_number(dctffee)>=0条件,那条有问题的记录

没有包含在结果集里,但是最后加上and to_number(dctffee)>=0 ,会在判断 dntftype<>1 之前判断 to_number(dctffee)>=0,导致一直报无效数字

的错误。

?

看来自己还是很小白啊!!!! XD

?