我正在使用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
将返回不正确的范围。
我的语法有问题吗?
谢谢,
答案 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;