2014-10-05 204 views
1

在不复制表达式的情况下,非整数值(在我的实际情况下,值的计算方式如下,我不希望重现一个漫长的查询百分比):可容纳所有类型的测试非整数是否在范围[a,b) - 或[a,b],(a,b),(a,b)

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

我感兴趣的是一个广义化界限:[],[)(]和()

+1

你的代码真的没有按”没有意义。我假设你想在where子句中使用该表达式,而不是在select子句中使用该表达式。 – 2014-10-05 17:27:13

+0

@GordonLinoff你是对的;我更新了这个问题 – 2014-10-05 17:42:51

回答

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 
0

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

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

它似乎并没有在PostgreSQL 9.1中提供 – 2014-10-05 18:08:08

+0

对不起,看不到你的标签,的确,它们首先出现在9.2中。 – vyegorov 2014-10-05 18:32:59

相关问题