我正在开发 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/