我正在使用设置了SQLite数据库的iPhone应用程序。我在数据库中有一个FLOAT类型的字段,所以我有10,500.00的值。 这里的事情是,如果我按该字段选择该表和顺序,则将值排序为字符串值。
以下是我得到的一个例子:
SELECT floatField FROM table ORDER BY floatField ASC;
结果是:
109,800.00
48,950.00
53,600.00
54,790.00
74,305.00
这显然是错误的,导致109,800.00>浮动值为48,950.00。 所以我认为SQLite正在处理这些值,就像它们是字符串一样,其中109,800.00< 48,950其中字符串'1'<字符串'4'。
如果我使用此查询将值转换为float:
SELECT cast(floatValue as Float) FROM table ORDER BY floatField ASC;
我得到的结果是:
109
48
53
54
74
所以这也是错误的。
欢迎任何想法!
答案 0 :(得分:3)
我建议在插入数据时不要使用逗号。 SQLite稍微转换数据,以便
insert into test values(1234.5);
insert into test values('1234.50');
insert into test values('1,234.5');
都不同。如果可能,请使用第一个版本,只有这样才能确保正确解析该值。
我自己,我无法重现这个问题,但也许是因为我没有使用相同版本的SQLite。