Измените тип данных столбца с Text на Integer в PostgreSQL [дубликат]
этот вопрос уже есть ответ здесь:
Я использую следующий запрос для изменения типа данных столбца от text до integer, но получаю ошибку:
alter table a.attend alter column terminal TYPE INTEGER ;
ошибка: столбец " терминал" невозможно автоматически привести к типу integer
1 ответов
create table test(id varchar );
insert into test values('1');
insert into test values('11');
insert into test values('12');
select * from test
--Result--
id
character varying
--------------------------
1
11
12
вы можете видеть из приведенной выше таблицы, которые я использовал тип данных – character varying
на id
колонна. Но это была ошибка, потому что я всегда даю integers
as id
. Итак, используя varchar
вот плохая практика. Поэтому давайте попробуем изменить тип столбца на integer
.
ALTER TABLE test ALTER COLUMN id TYPE integer;
но он возвращает:
ошибка: столбец "id" не может быть автоматически приведен к типу integer SQL состояние: 42804 подсказка: укажите выражение USING для выполнения преобразование
это значит, что мы не можем просто изменить тип данных, потому что данные уже есть в столбце. Поскольку данные имеют тип character varying
Postgres не может ожидать его как целое, хотя мы ввели только целые числа. Итак, теперь, как предложил Postgres, мы можем использовать USING
выражение для приведения наших данных в целые числа.
ALTER TABLE test ALTER COLUMN id TYPE integer USING (id::integer);
Это Работает.
поэтому вы должны использовать
alter table a.attend alter column terminal TYPE INTEGER USING (terminal::integer) ;