【问题标题】:Alter MySQL table varchar fields to decimal fields将 MySQL 表 varchar 字段更改为十进制字段
【发布时间】:2015-10-10 16:09:25
【问题描述】:

我有一个 MySQL 表,里面有几个列,比如

id  text_1  val_1   text_2  text_3  val_2
1   'bla'   1,23    'blub'  5,67    12,34

很遗憾,所有字段都定义为varchar。现在我尝试更改表格以使某些字段为十进制值。

我会试试的

UPDATE table SET
val_1 = CAST(val_1 AS DECIMAL(5,2)),
val_2 = CAST(val_2 AS DECIMAL(5,2));

这应该给我带有两位小数和最大值 999,99 的十进制值,对吗?

这是改变表结构的正确方法吗?这应该是一次性转换,因为值应该是 da decimal 类型,而字符串应该是 varchar 类型。

我必须先将“逗号”转换为“点”吗?

更新

不幸的是,我也有像 `

【问题讨论】:

  • 没有。除此之外,您需要更改数据类型,您还应该更改完整的表结构。表包含什么。我们或许可以帮助您做出更好的餐桌设计。

标签: mysql


【解决方案1】:

是的,您必须将 , 转换为 .第一的。

UPDATE sometable SET val_1=REPLACE(val_1,',','.');

之后必须更改表格:

ALTER TABLE sometable MODIFY COLUMN val_1 DECIMAL(5,2);

您的更新声明不是必需的。

如果您的值较小,它们将被四舍五入(在您的情况下是向下的)。为防止四舍五入,请使用另一个 DECIMAL 设置(更多位数)。

【讨论】:

  • 谢谢你。我应该如何进行更新?您对我在更新后的帖子中描述的问题有什么想法吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-05
  • 1970-01-01
  • 2013-01-21
  • 2021-03-14
  • 2014-04-22
相关资源
最近更新 更多