我有一个带有几个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'这样的值。但该字段应为十进制字段。我该怎么办?
答案 0 :(得分:1)
是的,你必须把它转换为。第一。
UPDATE sometable SET val_1=REPLACE(val_1,',','.');
之后必须改变表格:
ALTER TABLE sometable MODIFY COLUMN val_1 DECIMAL(5,2);
您的更新声明不是必需的。
如果您的值较小,它们将被舍入(在您的情况下为向下)。要防止舍入,请使用其他DECIMAL
设置(带有更多数字)。