我在SQL Server中有一個奇怪的例子。這種情況如下: 我有3列的表格:存儲過程中的BETWEEN語句
ID value1 value2
60FB 14.54 46.05
7066 12.18 41.23
7072 16.18 46.65
710F 12.17 47.65
7126 13.18 49.65
713E 17.18 48.65
7141 12.19 41.33
7144 12.18 47.65
7147 19.18 49.65
7149 18.18 42.65
71A6 17.18 43.65
71AA 14.54 44.05
ID是char,數值1的小數,值2是小數。
如果我在SQL Server中的select語句:
SELECT ID, value1, value2
FROM Node
where value1 between 12.1 and 12.2
and value2 between 41.2 and 41.5
我得到這樣的結果是我想擁有的一切:
ID value1 value2
7066 12.18 41.23
7141 12.19 41.33
現在我要傳遞的參數代入間存儲過程看起來像這樣:
create procedure XYZ
@value1min decimal(2,5),
@value2min decimal(2,5),
@value1max decimal(2,5),
@value2max decimal(2,5)
AS
BEGIN
SELECT ID, value1, value2
FROM Node
where value1 between @value1min and @value1max
and value2 between @value2min and @value2max
當我運行具有相同參數的過程我得到錯誤的結果是:
ID value1 value2
7066 12.18 41.23
710F 12.17 47.65
7141 12.19 41.33
7144 12.18 47.65
我認爲,問題是在所有值都滿足的條件值1,但兩人都沒有履行值2的條件範圍,所以我不知道爲什麼710F和7144出現在結果中。
有沒有人有任何答案如何解決這個問題?
謝謝, 馬克
存儲的proc調用看起來像什麼?什麼是列數據類型? – gbn 2011-02-26 09:02:30
參數順序可疑,值1和值2是混合的。你確定你以正確的順序傳遞參數嗎? – Andomar 2011-02-26 09:03:28
實際上,*不是*您的存儲過程,因爲小數(2,5)失敗。那麼我們如何幫助您排除故障? -1 – gbn 2011-02-26 09:14:01