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 |
+----+-------+
2条答案
按热度按时间c90pui9n1#
如果你想要一个固定位数的小数位数,使用
DECIMAL(5,2)
代替FLOAT。可以有更高的精度,例如
DECIMAL(9,2)
。我在上面的例子中选择了(5,2),因为它足以满足您在问题中显示的值。阅读更多关于它在这里:https://dev.mysql.com/doc/refman/8.0/en/fixed-point-types.html
cu6pst1q2#
您可以使用
FORMAT(909, 2)
,然后输出将是909.00
。所以,你的陈述将变成:
Select id, FORMAT(Va, 2) from MyTable;