SQLite搜索查询不使用双数据类型数据?

时间:2015-12-10 03:57:19

标签: java android mysql sql sqlite

我有3列:

  1. 纬度
  2. 经度
  3. 地名。
  4. 如果我在搜索查询中传递地名,我可以获得latlang值。但是,如果我通过纬度或经度值,我没有得到地名。光标始终返回计数0。

    运作良好:

    Select * from tablename where placename='chennai'
    

    不工作:

    Select * from tablename where latitude='12.2383'
    

    帮帮我

2 个答案:

答案 0 :(得分:0)

为什么要引用数值

Select * from tablename where latitude=12.2383

答案 1 :(得分: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

后一种方法更可取,因为它允许使用索引。