我目前在 postgresql 中有一个名为
companies
的表。companies
有一列name
,其长度为30
,但现在我想将列的长度减少到20
个字符,但不幸的是,我在该列中有一些条目的长度最多为25-30。谁能建议我如何在不丢失任何数据输入的情况下减小列的大小?
这是我迄今为止尝试过的:
alter table companies alter COLUMN name type varchar(20);
但我明白了:
错误:对于类型字符变化的值太长(20)
自然的方法是截断长度超过 20 个字符的名称:
update companies
set name = substr(name, 1, 20)
where length(name) > 20;
alter table companies
alter column name type varchar(20);
但是,您可以使用单个命令执行相同的操作,这应该要快得多:
alter table companies
alter column name type varchar(20)
using name::varchar(20);