2011-06-04 58 views
2

整數如果我想運行像SQL查詢的整數,發現在+/- 1

"SELECT integername from tblintegerlist where integerlist ..." 

的SQL語句我有一個像

integername 
1 
2 
3 
4 
5 

號碼列表,所以我想爲+結果/ - 1的搜索,所以對於'4'我會得到行3,4,5作爲結果。

+0

你沒有定義什麼「integerlist」。 – 2011-06-04 17:21:38

回答

0
SELECT integername 
FROM tblintegerlist 
WHERE (integername-<variable>) BETWEEN -1 AND 1 
+1

該解決方案似乎更好,因爲它避免重複變量名稱,但將計算應用於'integername'將最有可能阻止服務器使用該列上的索引(如果有)。 – 2011-06-04 21:20:05

3

如果我理解你正確

where integername >= n-1 AND integername <= n+1 
2

好像你想要寫有一個SQL>和<條款。

SELECT integername FROM tbintegerlist 
WHERE integername >= @val - 1 AND integername <= @val + 1 

您也可能更喜歡這樣的:

SELECT integername FROM tbintegerlist 
WHERE integername BETWEEN @val - 1 AND @val + 1 

但是,你要記得檢查你的數據庫,看看是否條款「之間」是包含或排除。對於某些數據庫而言,「之間」的意思是「大於或等於較小值,小於較大值」。

+0

MySQL之間''之間是包容性的。 – Johan 2011-06-04 18:51:18

+0

Oracle的BETWEEN也是包容性的。 – 2011-06-04 21:46:18

+0

PostgreSQL的BETWEEN是包容性的:http://www.postgresql.org/docs/8.2/static/functions-comparison.html – 2011-06-04 21:47:17