整數如果我想運行像SQL查詢的整數,發現在+/- 1
"SELECT integername from tblintegerlist where integerlist ..."
的SQL語句我有一個像
integername
1
2
3
4
5
號碼列表,所以我想爲+結果/ - 1的搜索,所以對於'4'我會得到行3,4,5作爲結果。
整數如果我想運行像SQL查詢的整數,發現在+/- 1
"SELECT integername from tblintegerlist where integerlist ..."
的SQL語句我有一個像
integername
1
2
3
4
5
號碼列表,所以我想爲+結果/ - 1的搜索,所以對於'4'我會得到行3,4,5作爲結果。
SELECT integername
FROM tblintegerlist
WHERE (integername-<variable>) BETWEEN -1 AND 1
該解決方案似乎更好,因爲它避免重複變量名稱,但將計算應用於'integername'將最有可能阻止服務器使用該列上的索引(如果有)。 – 2011-06-04 21:20:05
如果我理解你正確
where integername >= n-1 AND integername <= n+1
好像你想要寫有一個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
但是,你要記得檢查你的數據庫,看看是否條款「之間」是包含或排除。對於某些數據庫而言,「之間」的意思是「大於或等於較小值,小於較大值」。
MySQL之間''之間是包容性的。 – Johan 2011-06-04 18:51:18
Oracle的BETWEEN也是包容性的。 – 2011-06-04 21:46:18
PostgreSQL的BETWEEN是包容性的:http://www.postgresql.org/docs/8.2/static/functions-comparison.html – 2011-06-04 21:47:17
你沒有定義什麼「integerlist」。 – 2011-06-04 17:21:38