1) создать таблицу
CREATE TABLE ad_position_ad (
p_id bigint ,
p_name character varying(20) ,
devid integer ,
ad_type character varying(20) ,
platform character varying(20) ,
category_id integer ,
config character varying(20) ,
is_check character varying(20) ,
status character varying(20) ,
showing_total bigint ,
click_total bigint ,
user_total bigint ,
income_total bigint ,
online_time integer ,
create_time integer ,
modify_time integer);
После создания таблицы мы вставляем в таблицу некоторые данные.
2) Данные таблицы
mydb=> select count(*) from ad_position_ad;
count
-------
275
(1 row)
mydb=> select distinct config from ad_position_ad;
config
--------
2
0
1
(3 rows)
3) преобразовать столбец varchar в smallint
mydb=>
alter table ad_position_ad
alter column config type smallint using platform::smallint;
ALTER TABLE
4) еще раз проверить данные
mydb=> select distinct config from ad_position_ad;
config
--------
3
(1 row)
Обратите внимание, что значение конфигурации столбца уже изменилось. Кто-нибудь знает об этом?
Но следующая команда работает нормально, и значение не меняется:
mydb=>
alter table ad_position_ad
alter column config type smallint using cast(config as smallint);
ALTER TABLE