我有一个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十进制类型,字符串应该是varchar类型。
我必须先把“逗号”转换成“点”吗?
更新
不幸的是,我还有‘<0,01’这样的值。但是这个字段应该是一个十进制字段。我能用它做什么?
发布于 2015-10-10 16:13:06
是的,你必须把这个,转换成一个。第一。
UPDATE sometable SET val_1=REPLACE(val_1,',','.');在那之后,桌子必须改变:
ALTER TABLE sometable MODIFY COLUMN val_1 DECIMAL(5,2);不需要您的update语句。
如果您有较小的值,它们将被四舍五入(在您的情况下)。若要防止舍入,请使用另一个DECIMAL设置(有更多位数)。
https://stackoverflow.com/questions/33056035
复制相似问题