2013-10-21 44 views
0

我執行上浮點數以下SQLite的查詢:SQLite的浮點條件

SELECT * FROM Point where x1 < 12 AND x2 > 12 

的查詢工作的less than條件,但不能正確評估greater than條件。它似乎認爲6.12的值大於12.

在SQLite中評估浮點數有什麼已知問題嗎?

+0

你能展示一些你的數據的例子,特別是包含6.12的行嗎? – mucio

+2

我猜它正在做一個字符串比較 - 是'x1'和'x2'字符串列或數字列嗎? –

+0

他們是字符串列 –

回答

1

可能您的x2列是TEXT數據。你必須CAST它漂浮在爲了使代數比較:

SELECT * FROM Point where x1 < 12 AND CAST(x2 AS FLOAT) > 12; 

更好,將您所有的字符串數據轉換爲浮點:

UPDATE Point SET x2=CAST(x2 AS FLOAT) WHERE CAST(x2 AS FLOAT)=x2; 

這都將TEXT浮點數轉換爲FLOAT

+0

或x2 + 0也似乎將列轉換爲數字 –

+0

可能在更多的算術費用上。做'x2 + 0'本質上將評估爲'CAST(x2 AS NUMERIC)+ 0'。 –

0

也許你混合的條件下,你是一個使用,如小數點分隔的機器上,或者你比較字符串(如d士丹利的意見建議)

My demo in SQLFiddle按預期工作。