我有一个 SQL 查询,例如:
UPDATE t_example
SET column1=column2/column3
where 'SOME CLAUSE'
假设 column2 的值为 7,column3 的值为 1,则在此语句之后 column1 应设置为值 7,但始终为 6 而不是 7。对于除数为 1 的任何一对值,结果总是减去 1。我没有t 检查了 1 以外的值,但为什么会出现这种行为?
我有一个 SQL 查询,例如:
UPDATE t_example
SET column1=column2/column3
where 'SOME CLAUSE'
假设 column2 的值为 7,column3 的值为 1,则在此语句之后 column1 应设置为值 7,但始终为 6 而不是 7。对于除数为 1 的任何一对值,结果总是减去 1。我没有t 检查了 1 以外的值,但为什么会出现这种行为?
你column2
可能是一个浮点数并且column1
是一个int
. 如果计算的结果是,6.999999999
则转换为的结果int
是6
。
如果您需要精确的准确性,那么您应该使用定点数据类型,例如decimal
.
尝试ROUND()
MYSQL中的函数如下
NSERT INTO t_example SET column1=ROUND(column2/column3)