我在堆栈中看到一个帖子,里面的问答和我的问题非常相似。
这篇文章是:
MySQL: turn decimal into percent within view
如上所述,使用:

CONCAT(columnname * 100, '%')

我就是这么做的。
我有一张表,上面有一列具体工资范围的百分比。
这是工资扣除表。
我将百分比值作为十进制数据类型存储在“ee”列中。
ee | decimal(4,4) | not null

我的问题是它给了我这个结果,而不是我想要的。
例如,列中的一个条目是0.0200,我想在查看时显示为“2%”,但这就是我得到的。
select s_b,rangeA,rangeB,concat(ee * 100,'%') as 'ee_percent' from htbl;

+___________________________________+
|s_b|  rangeA|   rangeB|ee_percent  |
+---+--------+---------+------------+
|  1|    0.00|  1500.00|   1.0000%  |
|  2| 1500.00|999999.99|   2.0000%  |
+-----------------------------------+

我知道这是一个重复的基本问题,但我不知道为什么它不起作用,
如果您在我的语法或数据类型中发现错误,请告诉我。
如有任何建议和更正,我们将不胜感激。非常感谢。

最佳答案

您可以使用FORMAT使用以下解决方案:

SELECT s_b, rangeA, rangeB, CONCAT(FORMAT(ee * 100, 0), '%') AS 'ee_percent'
FROM htbl;

计算结果总是DECIMAL(4,4)。所以mysql用四个小数位显示结果。您可以使用FORMAT函数格式化结果或删除小数点的其他函数。
演示:https://www.db-fiddle.com/f/ncjBpJRwdQVbT7PUBoXgeU/0

10-05 21:18
查看更多