gpt4 book ai didi

MySql IEEE 浮点 NaN、PositiveInfinity、NegativeInfinity

转载 作者:行者123 更新时间:2023-11-29 11:02:46 24 4
gpt4 key购买 nike

我查了很多关于这个问题的问题,但还没有找到解决方案。希望这不是一个重复的问题。

问题

如果我执行以下任一操作:

INSERT INTO `Numbers`(`Number`) VALUES ('NaN')
INSERT INTO `Numbers`(`Number`) VALUES ('Inf')
INSERT INTO `Numbers`(`Number`) VALUES ('+Inf')

我在表中插入了 0.0。有时我会得到:

Error Code: 1265. Data truncated for column 'Number'

我还尝试了不同的大小写和拼写,都具有相同的效果。

我什至尝试过:

INSERT INTO `Numbers`(`Number`) VALUES ('1111111111111000000000000000000000000000000000000000000000000000')

如何将 NaN float 插入 MySql 表中?

如果确实不可能,那么原因是什么? (也许我使用的 MySql 版本不正确?)

使用 NULL 作为 NaN

我实际使用这个的表我不想在这些列中允许 NULL 值。所以我不喜欢在 ORM 层的某个地方用 NULL 替换 NaN 的想法

最佳答案

要全面了解 MySQL 如何操作数字,您可以阅读以下章节:

上一篇文章提到了这一点:

The server includes dtoa, a conversion library that provides the basis for improved conversion between string or DECIMAL values and approximate-value (FLOAT/DOUBLE) numbers

[...]

The dtoa library provides conversions with the following properties. D represents a value with a DECIMAL or string representation, and F represents a floating-point number in native binary (IEEE) format.

[...]

conversions are lossless unless F is -inf, +inf, or NaN. The latter values are not supported because the SQL standard defines them as invalid values for FLOAT or DOUBLE.

简而言之:

  • SQL 标准明确禁止这些值
  • MySQL 符合这方面的标准

关于MySql IEEE 浮点 NaN、PositiveInfinity、NegativeInfinity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41936403/

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