工作中碰到一个项目,需要统计一份报表,而结果是字符串型,并且结果也未必是数字。
尝试了用正则匹配数字结果然后字符串转数字,出现了各种问题,而在查询时报错。
其中包括比如正则匹配数字用\d会将罗马数字也匹配进去。结果是数字却无法转换的问题。
最后用ISNUMERIC(RESULT) = 1判断后,因为其匹配结果一定为数字,Oracle会自动进行转换并比较。
大致写法如下:
SELECT * FROM MYTABLE WHERE ISNUMERIC(RESULT) = 1 AND RESULT > 100;