Изменения данных при преобразовании столбца varchar в smallint - PullRequest
1 голос
/ 17 февраля 2012

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

1 Ответ

3 голосов
/ 17 февраля 2012

Edit:

Переписав вопрос, я, наконец, думаю, что нашел настоящую проблему. Я цитирую:

alter table ad_position_ad
alter column config type smallint using platform::smallint;

Вы понимаете, что вы ALTER COLUMN config, но используете для этого значение столбца platform?

Попробуйте:

alter table ad_position_ad
alter column config type smallint using config::smallint;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...