gpt4 book ai didi

mysql 将 float 与 in 子句进行比较

转载 作者:行者123 更新时间:2023-11-29 13:47:49 27 4
gpt4 key购买 nike

我的表中有 float 类型的列。

我有一个查询,它接受一个值或一组值来与其中一列进行比较,并返回包含该值或存在于值数组中的所有行。

当比较一个值时,我使用LIKE子句,因为mysql中的 float 无法使用等号进行比较。

但是,在与值数组进行比较时,我使用了 IN 子句,这对我不起作用。

如何使用 IN 子句比较 float ?

最佳答案

比较 float 据的问题不是“无法使用等号进行比较”之一。问题是所有浮点值都是近似值,并且 = 运算符不执行近似值,仅执行精确相等。 IN 运算符也是如此。

大多数处理 float 比较的人都使用这样的东西:

 value BETWEEN target-epsilon AND target+epsilon

其中 epsilon 类似于 0.0001。

因此,做

  value IN (target1, target2, target3)

很难使工作可靠。您还没有提到您在浮点值中存储了什么样的数字。但是,假设它们是纬度值,如下所示:42.79842367778193。现在,显然 42.7984237 足够接近,可以被认为是相等的。

所以你可以做这种事情。

CAST(10000.0 * latitude AS INT) IN 
(CAST(10000.0 * 42.7984237 AS INT), CAST(10000.0 * 43.1234567 AS INT))

关于mysql 将 float 与 in 子句进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17154312/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com