SQL中varchar类型的数字如何转换成number类型中to_number('999')的使用

在sql中,如果你要转换类型本来是’999’varchar类型的数据,你要转换成999number类型的数据来比较大小,使用的是to_number(’’)函数。
select to_number(‘999.’) from dual;
这个方法也可以将你如果你的数据后面带有小数点的话也能转换成数据,如下图
SQL中varchar类型的数字如何转换成number类型中to_number('999')的使用
但是有需求说某个字段要转换为数字的话,就有问题,如果这个字段中的数据有中文或者其他垃圾数据组成的话就无法使用该函数,会报无效数字的异常
java.sql.SQLSyntaxErrorException: ORA-01722: 无效数字

select (case
when regexp_replace(‘2331分sdf,@##yc’, ‘[0-9,.,分,,,A-Z,a-z]’, ‘’) IS NULL then
to_number(regexp_replace('2331分sdf,
@##yc’, ‘[分,,,A-Z,a-z]’, ‘’))
else
0
end)
from dual;
就可以使用上面的语句来判断,上面是如果你去除掉数字和小数点,以及英文单词,然后那个分是我需求需要去除的,然后是空的话,就说明在你的字段中该数据是为数字字母,等等,你去除掉就行然后去比较,如果还有其他垃圾数据的话你可在else 中再判断,去除掉垃圾啊数据后剩下的就是你的数字,我这里直接给他弄成0了。