- 緯度
- 經度
- 地名。
如果我在搜索查詢中傳遞地名,我可以獲得latlang值。但是如果我傳遞了緯度或經度值,我沒有得到地名。光標總是返回計數爲0
正常工作:
Select * from tablename where placename='chennai'
不工作:
Select * from tablename where latitude='12.2383'
幫我
如果我在搜索查詢中傳遞地名,我可以獲得latlang值。但是如果我傳遞了緯度或經度值,我沒有得到地名。光標總是返回計數爲0
正常工作:
Select * from tablename where placename='chennai'
不工作:
Select * from tablename where latitude='12.2383'
幫我
問題是你如何定義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
後一種方法是可取的,因爲它允許使用索引。
爲什麼一個數值被引用
嘗試
Select * from tablename where latitude=12.2383
我也試過了。不工作 –
請參閱Gordons回答 –
第1列和第2列是double值,所以我在查詢中傳遞double值。 –
@ggopi。 。 。除了不知道第一列和第二列是什麼外,我認爲你錯過了答案的要點。 –
Abs也不起作用。其他2不是優選的。因爲我想要確切的位置。所以必須使用正確和單一的價值。你能否清楚解釋一下 –