我使用以下查询:
ALTER TABLE presales ALTER COLUMN code TYPE numeric(10,0);
要将列的数据类型从character(20)
更改为numeric(10,0)
,但我得到了错误:
"代码"列不能转换为数字类型
我使用以下查询:
ALTER TABLE presales ALTER COLUMN code TYPE numeric(10,0);
要将列的数据类型从character(20)
更改为numeric(10,0)
,但我得到了错误:
"代码"列不能转换为数字类型
您可以try 使用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
中有任何东西不能转换成数字,这将失败;如果使用失败,在更改列类型之前,必须手动清理非数字数据.