sqlite:用实际值选择麻烦

时间:2010-03-05 01:52:48

标签: database sqlite

我正在使用sqlite数据库来存储日志数据。

我的表有很多'真实'类型的列。当我尝试执行以下查询时:

SELECT * FROM log WHERE SomeNumber = 61;
SELECT * FROM log WHERE SomeNumber='61';

它不会返回任何内容。

查询如:

SELECT * FROM log WHERE SomeNumber < 10
SELECT * FROM log WHERE SomeNumber > 10

将返回不正确的范围。

我的语法有问题吗?

谢谢,

2 个答案:

答案 0 :(得分:1)

这取决于你放入桌子的内容。实数几乎总是非常棘手。 “实际”值61可以存储为61.0000000000001。基本前提是,如果你需要检查是否相等,那就更喜欢整数。

您可能想尝试:

SELECT * FROM log WHERE SomeNumber = 61.0;

它可能还取决于您使用原始值输入的精确度。

注意:我应该指出,通常情况下,像61这样的整数值即使是真实存储也是如此。这只是一种简化。

答案 1 :(得分:0)

在查询中使用实数时我遇到了完全相同的问题,我使用以下请求解决了'

SELECT * FROM log WHERE SomeNumber = 61.7;

变为

SELECT * FROM log WHERE SomeNumber between 61.7-0.00001 and 61.7+0.00001;