Re: ALTER TABLE ( smallinto -> boolean ) ...

Поиск
Список
Период
Сортировка
От Rod Taylor
Тема Re: ALTER TABLE ( smallinto -> boolean ) ...
Дата
Msg-id 1125358411.13034.103.camel@home
обсуждение исходный текст
Ответ на ALTER TABLE ( smallinto -> boolean ) ...  ("Marc G. Fournier" <scrappy@postgresql.org>)
Список pgsql-hackers
On Mon, 2005-08-29 at 20:15 -0300, Marc G. Fournier wrote:
> I have a table with several 'smallint' fields that I'd like to convert to 
> booleean ... the data in each is either 0 or 1, and:
> 
> # ALTER TABLE table ALTER COLUMN field1 type boolean;
> ERROR:  column "field1" cannot be cast to type "pg_catalog.bool"
> 
> Should this not work?  If not, is there a way to do it so that it will, 
> without having to reload the whole table?

development=# select '0'::smallint::boolean;
ERROR:  cannot cast type smallint to boolean

You were casting an unknown to boolean.

Anyway, USING is what you're looking for:

ALTER TABLE tableALTER COLUMN field1 TYPE boolean    USING CASE WHEN field1 = 0 THEN FALSE        WHEN field1 = 1 THEN
TRUE       ELSE NULL        END;
 
-- 



В списке pgsql-hackers по дате отправления:

Предыдущее
От: David Fetter
Дата:
Сообщение: Re: ALTER TABLE ( smallinto -> boolean ) ...
Следующее
От: Tom Lane
Дата:
Сообщение: Re: ALTER TABLE ( smallinto -> boolean ) ...