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

Sql 测试非整数是否在范围[a,b]-或[a,b],(a,b),(a,b]内,sql,postgresql,postgresql-9.1,Sql,Postgresql,Postgresql 9.1,在不复制产生非整数值的表达式的情况下,实现以下内容的惯用方法是什么(在我的实际情况中,该值是在我不想复制的冗长查询之后以百分比计算的): SELECT*FROM SomeTable,其中1/100.0>0和1/100.0如果不想重写表达式,则使用子查询: select t.* from (select 1/100.0 as x . . . ) t where x > 0 and x <= 0.5 您可以构造并检查它是否包含您的值: SELECT * FROM

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


SELECT*FROM SomeTable,其中1/100.0>0和1/100.0如果不想重写表达式,则使用子查询:

select t.*
from (select 1/100.0 as x
      . . .
     ) t
where x > 0 and x <= 0.5
您可以构造并检查它是否包含您的值:

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

您的代码真的没有意义。我假设您希望在
where
子句中使用该表达式,而不是在
select
子句中使用该表达式。@GordonLinoff您是对的;我更新了问题这似乎在PostgreSQL 9.1中不可用,因为没有查看您的标记,事实上,它们首先出现在9.2中。
where 1/100.0 between 0 and 0.5
SELECT * FROM SomeTable WHERE numrange(0,0.5,'(]') @> 1/100.0;