方法一,用正则的方法:
使用 regexp_like
例:
select * from tablename where
regexp_like(trim(data),'^([\-]?[0-9]+\.[0-9]+)$|^([\-]?[0-9])+$|^([\-]?[0-9]{1}\.[0-9]+E[\-]?[0-9])+$')
这个正则分三部分:
1、^([-]?[0-9]+.[0-9]+)$
浮点型,包括带小数点的情况
2、^([-]?[0-9])+$
整数型
3、^([-]?[0-9]{1}.[0-9]+E[-]?[0-9])+$
科学计数法表示的数字
以上三部分均包括了负数的情况
注:regexp_like适用于oracle 10g及其之后的版本,之前的不适用。
方法二,用正则的方法:
使用translate方法
例:
select data,decode(trim(translate(trim(cdata),‘0123456789.’,’ ‘)),’’,‘is number’,‘not number’)
from tablename
转载:https://blog.youkuaiyun.com/weixin_42297675/article/details/116318889