【发布时间】:2019-10-30 15:32:30
【问题描述】:
我有一个名为 druginfo 的数据库表。它包含 WSprice 列中的价格。 WSprice 列的类型为 Double。这意味着它可以包含 23.5698 个值。但我想显示 WSprice 列中的所有值,小数点后 2 位四舍五入,如 23.57。如何将其应用于列中的所有值?帮我做这件事。
【问题讨论】:
-
为什么是DOUBLE??????
标签: mysql
我有一个名为 druginfo 的数据库表。它包含 WSprice 列中的价格。 WSprice 列的类型为 Double。这意味着它可以包含 23.5698 个值。但我想显示 WSprice 列中的所有值,小数点后 2 位四舍五入,如 23.57。如何将其应用于列中的所有值?帮我做这件事。
【问题讨论】:
标签: mysql
如果您只想显示您的DOUBLE 列到小数点后两位,您可以使用ROUND 函数:
SELECT ROUND(column_name, 2)
FROM your_table
这将在结果集中将23.5698 的值显示为23.57。
如果你想改变整列的格式,你可以使用这个:
ALTER TABLE your_table MODIFY column_name DECIMAL(9, 2)
【讨论】:
DECIMAL(9,2),这是一个定点类型,不像float - dev.mysql.com/doc/refman/5.5/en/fixed-point-types.html
DOUBLE 而您不想更改它,只需使用 DOUBLE(9,2) 就像 DECIMAL 这个答案。
我认为我们需要使用CAST() 而不是ROUND()。
原因是ROUND()在数据库中存在十进制值时返回十进制值。
示例:
SELECT ROUND(columnName, 2)
FROM tableName
如果 columnName = 10.5 输出将类似于 10.50
但如果 columnName = 10 输出将类似于 10
而CAST() 将返回十进制值。但是我们需要DECIMAL 和CAST
SELECT CAST(columnName AS DECIMAL(10,2))
FROM tableName
输出将类似于10.00
【讨论】: