我有一个 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 的十进制值,对吗?
这是改变表结构的正确方法吗?这应该是一次性转换,因为值应该是十进制类型,而字符串应该是 varchar 类型。
我必须先将“逗号”转换为“点”吗?
Update
不幸的是我也有像“
是的,您必须将 , 转换为 .第一的。
UPDATE sometable SET val_1=REPLACE(val_1,',','.');
之后必须更改该表:
ALTER TABLE sometable MODIFY COLUMN val_1 DECIMAL(5,2);
您的更新声明不是必需的。
如果您的值较小,它们将被四舍五入(在您的情况下向下舍入)。为了防止舍入,请使用另一个DECIMAL
设置(更多数字)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)