以后更改字段长度会重写表,如果表比较大,那么表会加锁,需要很长时间

通过一种方法通过修改pg_attribute.atttypmod字段修改长度,不需要重写表
 查询select * from pg_attribute where attrelid='sp_sa_salestat'::regclass and attname='goodsname'
将字段opcode修改为100长度单位 
update pg_attribute set atttypmod=206 where attrelid='sp_sa_salestat'::regclass and attname='goodsname'; 

对于numric型长度是按整数转换的必须先查找要修改的长度在数据库里面的值,如numeric(12,4)长度是786440

修改字段类型 

(如果表里有数据,谨慎使用!!!
如果表里有数据,谨慎使用!!!
如果表里有数据,谨慎使用!!!)

当列的类型为字符类型,当我们想修改为数值类型时
ALTER TABLE the_table ALTER COLUMN col_name TYPE integer USING (col_name::integer);

  如果字段里有空白字符,使用以下方法:

ALTER TABLE the_table ALTER COLUMN col_name TYPE integer USING (trim(col_name)::integer);

在类型转换前先去空白。

修改类型为字符类型

ALTER TABLE the_table ALTER COLUMN col_name TYPE character varying(30) USING (col_name::character varying(30));
02-13 21:05