如何在oracle sql中对数字字符串进行数学比较

时间:2018-05-04 11:51:30

标签: sql oracle

我有一个存储数字和字符串值的列。我想从该列中过滤那些数值。假设我需要获得小于100的行。

mytable的

id     |    value
-------------------
1          aa
2          103
3          cc
4          90
5          88

如上表所示,'值'列类型是varchar。

我想选择值< 100行。

我的结果集应如下所示,

id     |    value
-------------------
4          90
5          88

这是我的想象查询,但它没有

select * from mytable where TO_NUMBER(value)<100;

我的问题是TO_NUMBER("*")案件。重要的是我想做一个mathamatical comarison,我想选择<100数字。

1 个答案:

答案 0 :(得分:3)

如果值为小数,则可以通过以下方式过滤掉不正确的值:

 where case
        when regexp_like(value, '^\d+$') and to_number(value) < 100 then 1
        else 0
       end = 1

SQL Fiddle Demo