如何对oracle sql中的数字字符串进行数学比较[重复]
Posted
技术标签:
【中文标题】如何对oracle sql中的数字字符串进行数学比较[重复]【英文标题】:How to do mathematical comparison to numeric strings in oracle sql [duplicate] 【发布时间】:2018-05-04 11:51:30 【问题描述】:我有一列存储数字和字符串值。我想从该列中过滤这些数值。假设我需要得到小于 100 的行。
我的表
id | value
-------------------
1 aa
2 103
3 cc
4 90
5 88
假设上表中,'value'列类型为varchar。
我想选择值
我的结果集应该如下,
id | value
-------------------
4 90
5 88
这是我的想象查询,但它没有
select * from mytable where TO_NUMBER(value)<100;
我的问题比TO_NUMBER("*")
的情况要迟钝。重要的是我想做一个数学比较,我想选择<100
数字。
【问题讨论】:
应该像 try parse 一样。如果该文本值是一个数字。那么它应该检查小于 100 的数字 你总是可以remove non-numeric chars,在需要的时候小心保留符号或小数点,但我想它永远不会表现得很好。 【参考方案1】:如果值是小数,那么您可以通过以下方式过滤掉不正确的值:
where case
when regexp_like(value, '^\d+$') and to_number(value) < 100 then 1
else 0
end = 1
SQL Fiddle Demo
【讨论】:
以上是关于如何对oracle sql中的数字字符串进行数学比较[重复]的主要内容,如果未能解决你的问题,请参考以下文章