我对MariaDB更新有奇怪的行为。
如果FLOAT字段值:
val FLOAT NULL DEFAULT NULL,
工作查询:UPDATE tabe1 SET val=17111400 WHERE table1.pk=1
但是如果我尝试将val递减或递增1(17111399或17111401) - 更新0行。
MariaDB的官方文档说max float是:
3.402823466E+38
这是一个错误?
答案 0 :(得分:1)
好的,我和同事一起想出来了(非常感谢!)。
默认情况下,mysql为数字分配~2个字节,为电源分配~2个字节(〜因为符号为1位,依此类推)。
然后,2^16 = 65536
,在浮点数中E之前有最大数量。
示例中的数字17111400
存储为1,7111400E7
所以,如果我们更新数字,并设置符号,逗号之后哪个序号位置数超过4 - mysql认为它是相同的数字并且UPDATE失败。