конвертнуть типы полей с char- > int

deRamzes

Новичок
конвертнуть типы полей с char- > int

Привет алл!
возникла такая проблема

сушествует некая талблица например:

CREATE TABLE "test" (
"test_fild" char(25)
)

и в данной таблице есть уже значение все они в виде int небходимо преобразовать поле в integer

через CREATE LOCAL TEMPORARY TABLE
создаю таблицу

CREATE TABLE "test_tmp" (
"test_fild" char(25)
)

потом
DROP TABLE "test";

CREATE TABLE "test" (
"test_fild" integer
)

следуюший шаг
INSERT INTO "test" ("test_fild")
select CAST("test_fild" AS integer) from test_temp

вот такакая ошибка
ERROR: Cannot cast type character varying to integer

пытался преобразовать сначала в text потом в integer
ошибка вываливатьеся типа немогу отпарсить фразу "0 ";

какое лекарство?? програмно чтото реализовавывать??

т к в данную таблицу уже много набили, а надо тип поля поменять

хотя можно преобразовать его в varchar и не морочить себе голову...
 

YRusinov

Филин Ух
Видимо тут надо программно реализовывать конверсию типов, т.к. для поля типа char(25) значения "test" и "0" равноправны, поэтому надо программой выделять ваши численные значения, записанные в строки, преобразовывать их уже в числа и потом записывать в новую таблицу.
 

deRamzes

Новичок
Автор оригинала: kvn
А у тебя точно там ВСЕ поля числовые?
да поля у меня точно все числовые
не больше одного символа
т е
0 1 2 3 4 5 6 7 8 9
либо Null


просто в MySql
это делалося очень просто и не возникало никаких там дописываний программ ит п ит д
на лету поменял тип поля и забыл(ну если в полях значение соотвтетвуют типу)
 

goodwarlock

Guest
Просто не предусмотрена конвертация из varchar в int.
Надо сначала в текст перевести:
SELECT '1'::text::int;
 

deRamzes

Новичок
ВСем спасибо все получилося.

в чем была ошибка моя

дело в том что
при создании поля char(25)
он создает поле длиной 25 символов ессесна
(пробывал много сопособов)
если конвертить с char - > text
то он конвертить так "1 ";

и когда пробуешь конвертнуть text - > int ругаеться на недопустимые символы т е пробелы или пустые поля

что я сделал
конвертнул в поле varchar(1)
потом в text, пробелы ушли
а потом без проблем в int


Благо есть програмулина под винду EMS PostgreSQL Manager
очень удобная
 
Сверху