2015-12-10 56 views
1

我有3列:SQLite搜索查詢不適用於雙數據類型數據?

  1. 緯度
  2. 經度
  3. 地名。

如果我在搜索查詢中傳遞地名,我可以獲得latlang值。但是如果我傳遞了緯度或經度值,我沒有得到地名。光標總是返回計數爲0

正常工作:

Select * from tablename where placename='chennai' 

不工作:

Select * from tablename where latitude='12.2383' 

幫我

回答

0

問題是你如何定義latitude。如果它是一個字符串,並且正好是該值,那麼很好。否則,您可能會比較浮點值,這是一個問題 - 您的數量微乎其微。您可能認爲數據庫中的值是12.2383,但它可能確實是12.2383000001。你可能會認爲你傳遞的價值是12.2383,但它可能確實是12.2382999997。

這裏有一些方法來解決這個問題:

where abs(latitude - 12.2383) < 0.00001 

where cast(latitude as decimal(8, 4)) = cast(12.2383 as decimal(8, 4)) 

where latitude between 12.2382 - 0.000001 and 12.2382 + 0.000001 

後一種方法是可取的,因爲它允許使用索引。

+0

第1列和第2列是double值,所以我在查詢中傳遞double值。 –

+0

@ggopi。 。 。除了不知道第一列和第二列是什麼外,我認爲你錯過了答案的要點。 –

+0

Abs也不起作用。其他2不是優選的。因爲我想要確切的位置。所以必須使用正確和單一的價值。你能否清楚解釋一下 –

0

爲什麼一個數值被引用

嘗試

Select * from tablename where latitude=12.2383 
+0

我也試過了。不工作 –

+0

請參閱Gordons回答 –