我正在尝试使用 BETWEEN 运算符通过 Android 比较 sqlite 中的纬度和经度值。问题是,该值总是像字符串一样进行比较,而我不知道如何将其作为数字进行比较。我发现这一点是因为使用查询“select * from database orderby latitude”会返回一个未按数字排序的列表。 KEY_LAT 和 KEY_LONG 我已存储为 TEXT 和 REAL,并且得到相同的输出。请告诉我您需要什么信息。
这是查询:
double high_lat = curr_lat + 100.0;
double high_long = curr_longitude + 100.0;
double low_lat = curr_lat - 100.0;
double low_long = curr_longitude - 100.0;
Cursor cursor = db.query(TABLE_NAME, new String[] {KEY_ID, KEY_NAME, KEY_ADDR, KEY_LAT, KEY_LONG}, select,
new String[]
{KEY_LAT + " BETWEEN " + low_lat + " AND "
+ high_lat + " AND " + KEY_LONG + " BETWEEN " + low_long + " AND "
+ high_long},
null, null, null);
最佳答案
将您的输入转换为 REAL 作为最后的手段。
...KEY_LONG + "介于 CAST("+ low_long + "AS REAL) 和 CAST("+ high_long +"AS REAL)"
关于android - 比较 SQLite 中的 Double NOT 字符串值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16202334/