问题
I need to change the data type of a column from _float8 to int4
ALTER TABLE "table" ALTER COLUMN "col" SET DATA TYPE int4;
results in column "col" cannot be cast automatically to type integer
ALTER TABLE "table" ALTER COLUMN "col" SET DATA TYPE int4 USING (col::integer);
results in cannot cast type double precision[] to integer
any ideas?
回答1:
You have to point out which element of the array should be used in the conversion, e.g.
alter table x alter column y set data type int4 using (y[1]::int)
db<>fiddle.
回答2:
The problem is that you have an array. To fix this, you need array operators:
ALTER TABLE "table"
ALTER COLUMN "col" SET DATA TYPE int4 USING (col[1]::integer);
Here is a db<>fiddle.
来源:https://stackoverflow.com/questions/56753071/change-column-datatype-from-array-to-integer