android - sqlite - GROUP BY 在修改后的列中使用 CAST

标签 android sqlite group-by

我正在开发 Android SQLite(使用 Galaxy s2 进行测试) 我无法解决这个问题

我有这样一个数据库:

COORDINATES
id latitude   longitude
1  37.996163  -116.644592
2  37.996163  -116.644592
3  37.957507  -116.67467
4  36.370157  -91.156311

我运行查询:

select CAST((latitude*10) AS UNSIGNED) AS lat, CAST((longitude*10) AS UNSIGNED) AS lon from coordinates group by lat,lon

我希望:

lat  lon
379  -1166
363  -911

相反,我得到:

lat  lon
379  -1166
379  -1166
363  -911

对未被CAST修改的值执行“分组依据” 我做错了什么? mysql 上的相同查询完美运行。

谢谢

最佳答案

sqlite 没有UNSIGNED 数据类型,转换成它实际上并没有做任何事情。这些值是 float ,直到您调用例如Cursor getInt() 将它们转换为整数。

转换为例如INTEGER 代替:

sqlite> create table coordinates(id integer primary key, latitude, longitude);
sqlite> insert into coordinates values(1,37.996163,-116.644592),(2,37.996163,-116.644592),(3,37.957507,-116.67467),(4,36.370157,-91.156311);
sqlite> .head on
sqlite> select CAST((latitude*10) AS UNSIGNED) AS lat, CAST((longitude*10) AS UNSIGNED) AS lon from coordinates group by lat,lon;
lat|lon
363.70157|-911.56311
379.57507|-1166.7467
379.96163|-1166.44592
sqlite> select CAST((latitude*10) AS INTEGER) AS lat, CAST((longitude*10) AS INTEGER) AS lon from coordinates group by lat,lon;
lat|lon
363|-911
379|-1166
sqlite> 

关于android - sqlite - GROUP BY 在修改后的列中使用 CAST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19951383/

相关文章:

Android线程问题

java - 有没有办法在 RecyclerView 下添加按钮或任何内容

android - 我的应用程序可以在 android 2.2 和 android 2.3.3 模拟器上运行,但不能在我的手机 galaxy s android 2.3.5 上运行/阅读 facebook、twitter 联系人?

MySQL - 返回单行中未确定的列数,与公共(public)键相关

MySQL 按降序排列

sql - T-SQL 按问题分组

android - 带有 Mockito 或 Easy Mock 的 Robotium

输入ls后sqlite无法退出

java - SQLite 数据库不存在 Android

python - 存储用户对数据行的权限