测试非整数是否在[a,b) - 或[a,b],(a,b),(a,b]范围内

时间:2014-10-05 17:25:05

标签: sql postgresql postgresql-9.1

在没有复制产生非整数值的表达式的情况下实现以下内容的惯用方法是什么(在我的实际情况中,值是按照我不想要的冗长查询的百分比计算的重现):

SELECT * FROM SomeTable WHERE 1/100.0 >0 AND 1/100.0<=0.5

我对能够容纳所有类型边界的广义模式感兴趣:[],[),(]和()。

2 个答案:

答案 0 :(得分:1)

如果您不想重写表达式,请使用子查询:

select t.*
from (select 1/100.0 as x
      . . .
     ) t
where x > 0 and x <= 0.5

对于两个nds的特殊情况,您可以使用between

where 1/100.0 between 0 and 0.5

答案 1 :(得分:0)

您可以构建the range并检查它是否包含您的值:

SELECT * FROM SomeTable WHERE numrange(0,0.5,'(]') @> 1/100.0;