0

我正在对浮点数执行以下 SQLite 查询:

SELECT * FROM Point where x1 < 12 AND x2 > 12 

该查询适用于该less than条件,但不能greater than正确评估该条件。似乎认为 的值6.12大于 12。

在 SQLite 中评估浮点数是否存在任何已知问题?

4

2 回答 2

1

可能,您的x2列是TEXT数据。您必须CAST将其浮动以进行代数比较:

SELECT * FROM Point where x1 < 12 AND CAST(x2 AS FLOAT) > 12;

更好的是,将所有字符串数据转换为浮点数:

UPDATE Point SET x2=CAST(x2 AS FLOAT) WHERE CAST(x2 AS FLOAT)=x2;

这会将所有TEXT浮点数转换为FLOAT.

于 2013-10-22T08:19:29.150 回答
0

可能您正在混合条件,您在使用 , 作为小数分隔符的机器上,或者您正在比较字符串(正如 D Stanley 在评论中所建议的那样)

我在 SQLFiddle 中的演示按预期工作。

于 2013-10-21T16:47:20.957 回答