mysql - 如何使用 MySql 查询将数据库中的数字四舍五入到小数点后两位

标签 mysql decimal rounding

我想将 woo commerce 数据库表 wp_postmeta 中的数字四舍五入到小数点后两位。 有一列 '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'

希望这里有人能提供帮助。

最佳答案

documentation on round说:

ROUND(X), ROUND(X,D)

Rounds the argument X to D decimal places. [...] D defaults to 0 if not specified.

所以你的 update会是:

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

显示格式

如果您关心的是显示具有 2 个小数位的数字,最好保持原样的完整精度,但更改您选择值的方式从你的 table 上,还有我们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 完全相同;只是它们的显示格式不同。

关于mysql - 如何使用 MySql 查询将数据库中的数字四舍五入到小数点后两位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38322109/

相关文章:

php - 无法从组 id 2 中的表单插入数据库,但它插入到组 id 1 中

java - java中十进制数的奇怪正则表达式行为

java - 如何将小数转换为分数?

excel - 显示 1/8 英寸的 VBA 用户定义函数显示空白

java - 将数据库值获取到小程序中

php - 如果数据库中的值相同,则添加选中的复选框

c# - Linq 数据类型与 Double 的比较

c++ - floor() 行为异常

mysql - Symfony2 子级查询

c# - .Net 中 Decimal.One、Decimal.Zero、Decimal.MinusOne 的用途是什么