Answers:
您可以尝试使用USING
:
可选
USING
子句指定如何从旧的值计算新的列值;如果省略,则默认转换与从旧数据类型到新数据类型的转换相同。USING
如果没有从旧类型到新类型的隐式或赋值转换,则必须提供一个子句。
因此,这可能有效(取决于您的数据):
alter table presales alter column code type numeric(10,0) using code::numeric;
-- Or if you prefer standard casting...
alter table presales alter column code type numeric(10,0) using cast(code as numeric);
如果您无法将任何内容code
强制转换为数字,则此操作将失败;如果使用失败,则必须在更改列类型之前手动清理非数字数据。
TYPE varchar(255) USING (substring(formertextcolumn from 1 for 255))