MySQL版本是5.66.22
当我ROUND对存储在varchar中的十进制数字使用函数时,我看到所有.5数字的奇怪行为
Select round(0.5)
1
Select round('0.5')
0
Select round('26.5' + 0.00)
26
Run Code Online (Sandbox Code Playgroud)
但
Select round(1.5)
2
Select round('1.5')
2
Select round(0.55, 1)
0.6
Select round('0.55', 1)
0.6
Run Code Online (Sandbox Code Playgroud)
我在Oracle DB(12c)中检查了ROUND函数,它按预期工作
Select round('0.5') from dual
1
Select round(0.5) from dual
1
Run Code Online (Sandbox Code Playgroud)
有人知道如何解释吗?
所描述的mysql round()函数行为在应用程序中引起“取整”问题。为了解决这个问题,我使用:
Select round (CAST('0.5' AS DECIMAL(10,2)))
1
Run Code Online (Sandbox Code Playgroud)
我知道将数字存储在varchar中是不好的设计,但是此应用程序是很久以前编写的,现在没有人想要重构代码