强制MySQL表中的2位小数格式

uinbv5nw  于 2023-05-28  发布在  Mysql
关注(0)|答案(2)|浏览(263)
mysql> select * from MyTable;
+----+--------+
| id | Va     |
+----+--------+
|  1 | 77.218 |
|  2 | 34.43  |
|  3 |   909  |
+----+--------+

如何更新列Va以强制永久(1)轮和(2)格式都为2d.p
Va是FLOAT数据类型
这是行不通的:

UPDATE MyTable SET Va=FORMAT(ROUND(Va,2),2);

即:选择 *:

+--------------+
| 77.22        |
| 34.43        |
| 909.00       |
+--------------+

它只是留下909在底部,而不是909.00感谢任何帮助

详细信息

mycursor = mydb.cursor()
def exe(_input):
    mycursor.execute(_input)
exe("USE olbliss$CCE")
exe("DROP TABLE IF EXISTS MyTable")
exe('''CREATE TABLE MyTable
(id INT(6) AUTO_INCREMENT PRIMARY KEY,
Va FLOAT(30) NOT NULL)''')
exe("INSERT INTO MyTable (Va) VALUES ('77.218');")
exe("INSERT INTO MyTable (Va) VALUES ('34.43');")
exe("INSERT INTO MyTable (Va) VALUES ('909');")
exe("UPDATE MyTable SET Va=FORMAT(ROUND(Va,2),2);")
mysql> select * from MyTable;
+----+-------+
| id | Va    |
+----+-------+
|  1 | 77.22 |
|  2 | 34.43 |
|  3 |   909 |
+----+-------+
c90pui9n

c90pui9n1#

如果你想要一个固定位数的小数位数,使用DECIMAL(5,2)代替FLOAT。
可以有更高的精度,例如DECIMAL(9,2)。我在上面的例子中选择了(5,2),因为它足以满足您在问题中显示的值。
阅读更多关于它在这里:https://dev.mysql.com/doc/refman/8.0/en/fixed-point-types.html

cu6pst1q

cu6pst1q2#

您可以使用FORMAT(909, 2),然后输出将是909.00
所以,你的陈述将变成:
Select id, FORMAT(Va, 2) from MyTable;

相关问题