gpt4 book ai didi

sql - 为什么即使提供了准确的数据,FLOAT 类型的数据比较也不起作用

转载 作者:行者123 更新时间:2023-12-05 01:43:45 24 4
gpt4 key购买 nike

在具有相同值的真实表中

SELECT * FROM float_value WHERE val = 49640.2473896214 -- No data returns

如果我将它四舍五入到总精度那么它就可以工作

SELECT * FROM float_value WHERE ROUND(val, 10) = ROUND(49640.2473896214, 10) --Returning Data

之后我创建了具有相同值 49640.2473896214 的临时表,它在上面失败的第一个查询中工作

CREATE TABLE #testing(Vvalue FLOAT)
INSERT INTO #testing VALUES (49640.2473896214)

SELECT * FROM #testing WHERE Vvalue = 49640.2473896214 -- Simply returning row

你能帮我弄清楚为什么 = 比较在上面不起作用吗?如果我应该始终使用 ROUND,那么找出要四舍五入的精度并进行比较将是另一个问题。

如果我们提供在字段中完全可见的输入,我想要结果,即 = 49640.2473896214 应该返回值。

提前谢谢你。

最佳答案

Approximate-number data types for use with floating point numeric data. Floating point data is approximate; therefore, not all values in the data type range can be represented exactly. https://learn.microsoft.com/en-us/sql/t-sql/data-types/float-and-real-transact-sql

这可能非常令人沮丧,但一些浮点值将无法通过相等运算符进行比较,并且有必要修复小数精度以确保可靠地使用相等。

关于sql - 为什么即使提供了准确的数据,FLOAT 类型的数据比较也不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48334679/

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