我有一个存储数字和字符串值的列。我想从该列中过滤那些数值。假设我需要获得小于100的行。
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
数字。
答案 0 :(得分:3)
如果值为小数,则可以通过以下方式过滤掉不正确的值:
where case
when regexp_like(value, '^\d+$') and to_number(value) < 100 then 1
else 0
end = 1