iOS:sqlite3运行时函数总是返回0(预期为double)

时间:2013-02-13 09:10:30

标签: ios sql sqlite fmdb

我已经实现了由辉煌的Dave Addey提供的算法,使用“球面律余弦法”公式计算两个坐标之间的距离(这是original link)。这就是我打算在查询中使用函数调用的方法:

NSString *SQLQuery= [NSString stringWithFormat: @"SELECT distance(lat, lon, '%f', '%f') as distance, * FROM table WHERE distance < %f", coord.latitude, coord.longitude, distance/1000.0];

问题是我可以正确地过滤半径为1km的结果,但是当我尝试访问列“距离”时它总是返回0.我使用FMDatabase,但是直接调用sqlite3({{1 }})无法解决问题。

以下是用于声明函数的代码(我尝试直接调用sqlite3):

[resultset doubleForColumnIndex: 0]

任何线索?

1 个答案:

答案 0 :(得分:0)

SQL Query的构建方式有错误,应该是:

@"SELECT * FROM (SELECT distance(lat, lon, %f, %f) as distance, * FROM table) WHERE distance < %f ORDER BY distance DESC"

(有关详细信息,请参阅问题的评论)