将MySQL表varchar字段更改为十进制字段

时间:2015-10-10 16:09:25

标签: mysql

我有一个带有几个colomns的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类型。

我是否必须转换逗号'指向'指向'第一λ

更新

不幸的是,我也有像'< 0,01'这样的值。但该字段应为十进制字段。我该怎么办?

1 个答案:

答案 0 :(得分:1)

是的,你必须把它转换为。第一。

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

之后必须改变表格:

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

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

如果您的值较小,它们将被舍入(在您的情况下为向下)。要防止舍入,请使用其他DECIMAL设置(带有更多数字)。