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(...))) :无效数字