max(to_number())无效数字解决办法

max(to_number())无效数字
 select to_number(substr(...))  from xxx ;没有问题
 加上MAX()
 select max(to_number(substr(...))) :无效数字
 改成
 select max(cast(substr())) 也无法解决
 to_number 已经成功了,为何max还是失败。
------解决思路----------------------
你 

引用:
 select to_number(substr(...))  from xxx ;没有问题
 加上MAX()
 select max(to_number(substr(...))) :无效数字
 改成
 select max(cast(substr())) 也无法解决
 to_number 已经成功了,为何max还是失败。


你的表有多少行记录?  你 select to_number(substr(...))  from xxx ;没有问题  有可能是因为 只是前面几十行没问题而已。 
使用max后,他是所有的都要先to_number. 你如果有用plsqldev的话, 先试试 所有的都to_number 显示出来看看
------解决思路----------------------
LZ 你这张表 xxx 的数据量是不是很大,并且你这些语句是在 plsql 中执行的,
其实这个时候,并不是对所有数据进行了 to_number ,只是对第一页进行了 to_number .

  
select to_number(substr(...))  from xxx ;


而执行下面的语句时,会把所有数据行都 to_number 一下,这样,前50 行没有问题,后面的数据就 to_number 失败了。

 
select max(to_number(substr(...))) :无效数字