我需要将列的数据类型更改VARCHAR为DECIMAL
我在列中有数据,但它们都是数字值10.00, 25.50等,
现在当我做alter table MY_TABLE alter column COL1 set data type to decimal(11,2)它的失败.
什么是我可以遵循的过程.
我敢肯定这不是一个新问题,但我找不到解决方案,所以不要嘲笑我的脑子,我在这里问.
语法是
ALTER TABLE {tableName} MODIFY {Column-Name} {New-Column-Definition}
IEALTER TABLE MY_TABLE MODIFY COL1 DECIMAL(11,2)
一般来说,这(改变列数据类型)不会将现有数据转换为新类型,并且可能会将不兼容的值设置为 NULL(或者它可能会进行智能转换,这几乎是 DBMS 服务器特定的)
如果数据量不是太大的话可以这样做
ALTER TABLE MY_TABLE ADD COLUMN Temporary decimal(11,2);
UPDATE MY_TABLE SET Temporary=CAST(COL1 AS DECIMAL(11,2));
ALTER TABLE MY_TABLE DROP COLUMN COL1;
ALTER TABLE MY_TABLE CHANGE Temporary COL1 decimal(11,2);
Run Code Online (Sandbox Code Playgroud)
编辑:第一部分可能不正确