SQLite问题浮点类型和顺序

时间:2011-04-01 14:46:03

标签: sqlite

我正在使用设置了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

所以这也是错误的。

欢迎任何想法!

1 个答案:

答案 0 :(得分:3)

我建议在插入数据时不要使用逗号。 SQLite稍微转换数据,以便

insert into test values(1234.5);
insert into test values('1234.50');
insert into test values('1,234.5');

都不同。如果可能,请使用第一个版本,只有这样才能确保正确解析该值。

我自己,我无法重现这个问题,但也许是因为我没有使用相同版本的SQLite。