如何使用MySql查询将数据库中的数字舍入到两个小数位

时间:2016-07-12 07:05:19

标签: mysql decimal rounding

我想在woo商务数据库表wp_postmeta中将数字四舍五入到2个小数点。 列'meta_key'包含行'_price'和列'meta_value',其中包含各种数据以及行'_price'中需要舍入的数字并减少到小数点后两位。 (我知道我也必须为_regular_price

这样做

我是SQL的初学者。我已经设法在PHPMyAdmin中做了一些事情,使用搜索来给我语法或复制和更改网络上找到的答案,但是这个让我感到难过,但还不够。

我设法使用此查询将所有价格加10% -

update wp_postmeta set meta_value = meta_value * 1.10 where meta_key='_regular_price'

我读过有一个'ROUND'函数,但不知道如何编写查询。

我猜它会是这样的 -

UPDATE wp_postmeta ROUND meta_value where meta_key='_price'

希望有人可以提供帮助。

2 个答案:

答案 0 :(得分:5)

documentation on round说:

  

ROUND(X)ROUND(X,D)

     

将参数X舍入到D小数位。 [...]如果未指定,D默认为0。

所以你的update将是:

UPDATE wp_postmeta 
SET    meta_value = ROUND(meta_value, 2)
WHERE  meta_key='_price'

显示格式

如果你关心的是显示一个带有2位小数的数字,那么保持完整的精确度可能会更好,但是改变你的select值的方式和我们format

如果没有上述更新,您仍然可以执行此操作:

SELECT FORMAT(meta_value, 2)
FROM   wp_postmeta
WHERE  meta_key='_price'

如果您在表格中的值为15.002916,则上述select会将其呈现为字符串:15.00

最后,如果meta_value的数据类型是varchar(因此,不是数值数据类型),您当然可以存储额外的尾随零:

UPDATE wp_postmeta 
SET    meta_value = FORMAT(meta_value, 2)
WHERE  meta_key='_price'

但是请注意,如果数据类型是文本类型,这只能按预期工作。在数值数据类型中,值15.00和15 完全相同;只是他们的显示格式不同。

答案 1 :(得分:0)

您可以使用Round Function对列进行舍入, 使用这样的函数:

SELECT ROUND(column_name,decimals) FROM table_name; 

在这种情况下写下面的查询:

select Round(_Price , 2) from your table name