2010-03-05 49 views
1

我正在使用sqlite數據庫來存儲日誌數據。sqlite:通過實際值選擇時遇到問題

我的表有很多'真正'類型的列。當我嘗試執行之類的查詢:

SELECT * FROM log WHERE SomeNumber = 61; 
SELECT * FROM log WHERE SomeNumber='61'; 

它將返回什麼。

查詢:

SELECT * FROM log WHERE SomeNumber < 10 
SELECT * FROM log WHERE SomeNumber > 10 

將返回不正確的範圍。

我的語法有什麼問題嗎?

謝謝,

+1

你是如何生成的表呢,你可以發佈DDL嗎? – 2010-03-05 02:06:48

+0

繼承人的表結構: CREATE TABLE日誌( 時間文本, TemperaturedegC真實的, ReceivedPackets真實的, 錯誤實際 ); – Goro 2010-03-05 02:41:32

回答

1

這真的取決於你放入你的表。實際數字幾乎總是非常棘手。 61的「真實」值可能被存儲爲61.0000000000001。基本的前提是,如果你需要檢查平等,更喜歡整數。

你可能也想嘗試:

SELECT * FROM log WHERE SomeNumber = 61.0; 

它也可能取決於你有多少精度輸入的原始值。

注意:我應該指出,通常情況下,像61這樣的整數值被精確地存儲,即使是真實的。這只是一個簡化。

0

我在查詢中使用實數時完全相同的問題,而且我解決「使用下面的請求

SELECT * FROM log WHERE SomeNumber = 61.7; 

變爲

SELECT * FROM log WHERE SomeNumber between 61.7-0.00001 and 61.7+0.00001; 
相關問題