为什么这种奇怪的MYSQL会导致分裂?
我有一个SQL查询,如:为什么这种奇怪的MYSQL会导致分裂?,mysql,Mysql,我有一个SQL查询,如: UPDATE t_example SET column1=column2/column3 where 'SOME CLAUSE' 假设column2的值为7,column3的值为1,则在此语句后column1应设置为值7,但它始终为6而不是7。对于除数为1的任何一对值,结果总是小于1。我没有检查除1以外的值,但为什么会出现这种行为?这可能是浮点不准确。 您的column2可能是一个浮点,column1可能是一个int。如果计算结果为6.99999999,则转换为i
UPDATE t_example
SET column1=column2/column3
where 'SOME CLAUSE'
假设column2的值为7,column3的值为1,则在此语句后column1应设置为值7,但它始终为6而不是7。对于除数为1的任何一对值,结果总是小于1。我没有检查除1以外的值,但为什么会出现这种行为?这可能是浮点不准确。
您的column2
可能是一个浮点,column1
可能是一个int
。如果计算结果为6.99999999
,则转换为int
的结果为6
如果需要精确的精度,则应使用定点数据类型。这可能是浮点不准确。
您的column2
可能是一个浮点,column1
可能是一个int
。如果计算结果为6.99999999
,则转换为int
的结果为6
如果您需要精确的精度,那么您应该使用定点数据类型。尝试MYSQL中的函数,如下所示
N插入t_示例集column1=圆形(column2/column3)
从MYSQL中尝试以下函数
N插入t_示例集column1=圆形(column2/column3)
但两者都是长度为11的
integer
,而第3列是什么?我无法重现这一点。你能提供一个SQLFIDLE来产生你的问题吗?嘿,检查我的问题编辑。该语句是update
语句,不是insert<代码>列1
最初保留值0。其他列与前面一样保留7和1。在Fiddle中尝试这个,我似乎无法理解,好吧,我用SQLFiddle完成了,它似乎给出了正确的结果。我不知道我的行为为何如此。但两者都是长度为11的整数
,而列3是什么?我无法重现这一点。你能提供一个SQLFIDLE来产生你的问题吗?嘿,检查我的问题编辑。该语句是update
语句,不是insert<代码>列1
最初保留值0。其他列与前面一样保留7和1。在Fiddle中尝试这个,我似乎无法理解,好吧,我用SQLFiddle完成了,它似乎给出了正确的结果。我不知道为什么我的行为如此。