2014-10-05 242 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

相關問題