2013-11-27 60 views
1

我有一個類似的查詢:SQL服務器未找到記錄包含浮點值,它返回

SELECT SpecimenID, TestPeriodID, Grams, ConsumptionRate FROM LabData 
WHERE TestPeriodID = 255 
AND TestID = 1 
AND Grams = 728560 

時返回先後爲FLOAT列ConsumptionRate一個的16.5667068820687值的記錄。

我現在以下內容添加到我的查詢的末尾:

AND ConsumptionRate = 16.5667068820687 

執行新的查詢返回零個記錄,即使附加條件是什麼SQL Server本身的報道。我認爲這是一個舍入誤差。但是,我有一個CLR函數,它根據第一個返回的結果執行第二個查詢。

我能做些什麼,以我的生成的搜索條件來維持的第一個結果的準確表示,但在第二個結果不可錯過現有的記錄?

+0

什麼是ConsumptionRate的數據類型? 'EXECUTE sys.describe_first_result_set N'SELECT ConsumptionRate FROM LabData AS L'' – billinkc

+2

我猜一個人正在被解釋爲DECIMAL。 'DECLARE @x FLOAT = 16.5667068820687; SELECT @x WHERE @x = CONVERT(DECIMAL(28,12),16.5667068820687);'你爲什麼要使用FLOAT(已經知道並記錄在案的四捨五入問題 –

+0

此外,你爲什麼將行標識由值,而不是由? ?ID列這就好比識別的名稱或DateHired,而不是通過SSN或僱員的員工 - 當你聘請了兩位約翰·史密斯會發生什麼就在同一天 –

回答

0

如果您使用 - 它會帶來什麼結果嗎?

ConsumptionRate > 16.56 AND ConsumptionRate < 16.57 
相關問題