原因: to_number中数值有无法转为数值型的,比如例子的’nan’字符;或者还有其他非法字符在数据里。
解决方法1: 剔除无效字符(如’nan’,注意这里举例的’nan’是示例数据中的一个字符,不是空值Nan),并且在末尾where再to_number一次。
代码:
select *
from (select to_number(column) as column1, a.*
from (select * from table t where column != ‘nan’) a)
where to_number(column1) > 2019
解决方法2: 去除非数字非小数点的非法字符regexp_replace(PRICE,’[^0-9]’,’’)
代码:
select *
from (select to_number(regexp_replace(PRICE, ‘[^0-9.]’, ‘’)) as P1,
a.*
from (select * from table t where PRICE != ‘nan’) a)
where to_number(P1) <= 500000