我有3列:
如果我在搜索查询中传递地名,我可以获得latlang值。但是,如果我通过纬度或经度值,我没有得到地名。光标始终返回计数0。
运作良好:
Select * from tablename where placename='chennai'
不工作:
Select * from tablename where latitude='12.2383'
帮帮我
答案 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
后一种方法更可取,因为它允许使用索引。