我正在对浮点数执行以下 SQLite 查询:
SELECT * FROM Point where x1 < 12 AND x2 > 12
该查询适用于该less than
条件,但不能greater than
正确评估该条件。似乎认为 的值6.12
大于 12。
在 SQLite 中评估浮点数是否存在任何已知问题?
可能,您的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
.
可能您正在混合条件,您在使用 , 作为小数分隔符的机器上,或者您正在比较字符串(正如 D Stanley 在评论中所建议的那样)
我在 SQLFiddle 中的演示按预期工作。