如何检查Postgres中的浮点数是否在多个范围之间?

问题描述 投票:0回答:1

我正在尝试编写这样的查询:

SELECT * FROM table t
WHERE ((long_expression BETWEEN -5 AND -2) OR 
       (long_expression BETWEEN 0 AND 2) OR 
       (long_expression BETWEEN 4 and 6))

long_expression大约等于此:

(((t.s <#> (SELECT s FROM user WHERE user.user_id = $1)) / (SELECT COUNT(DISTINCT cluster_id) FROM cluster) * -1) + 1)

[t.ssCUBE数据类型,<#>是索引距离运算符。

我可以在体内多次重复这种长表达,但这太冗长了。另一种选择是将它以某种方式保存在变量中(使用CTE?),但是我认为这可能消除了在WHERE子句中使用索引的可能性?

我也找到了int4rangenumrange,但我也不认为它们在这里也可以工作,因为距离运算符返回的是float8的值,而不是整数或数字。

sql postgresql indexing between
1个回答
0
投票

您可以使用横向连接:

© www.soinside.com 2019 - 2024. All rights reserved.