Изменить тип столбца таблицы не работает в Астер - Я, вероятно, испортить его
Я использую Aster, так как есть некоторые отличные функции Random Forest. Моя зависимость, или переменная ответа, является булевой дихотомической переменной; 0 или 1.
Когда я запускаю ее через функцию выбора произвольного леса, она создает прогнозируемое значение переменной ответа. Он вызывает эту переменную предсказание и автоматически создает ее как VARCHAR(ДЕЙСТВИТЕЛЬНО БОЛЬШОЙ ИНТЕГЕР ЗДЕСЬ).
Чтобы сделать некоторые из моих расчетов, я просто хочу привести или преобразовать его в целое число из строки. Все результирующие строки символов - это либо 0, либо 1:
alter table a0q892.zf_predict alter column prediction int;
не работает. Я получаю сообщение об ошибке:
Executed as Single statement.
Failed [34 : 42000] [AsterData][ASTERJDBCDSII](34) ERROR: syntax error at or near "int" ()
Я уверен, что есть много причудливых и элегантных способов сделать это. Но я думаю, я мог бы просто сделать это целым числом для будущих вычислений?
1 ответ
В соответствии с документацией астры, есть ограниченные возможности для манипулирования столбцами. Вы не можете изменить тип данных столбца.
Однако астра позволяет вам изменять размер столбца varchar. Вы упомянули, что хотите бросить на INTEGER
, но я думаю, что в вашем случае использования VARCHAR(1)
было бы тоже хорошо. Если да, то вы можете пойти:
ALTER TABLE a0q892.zf_predict ADD prediction VARCHAR(1);
Если вам действительно нужно INTEGER
(или любой другой тип, кроме VARCHAR(n)
), тогда вы должны продолжить старый путь:
- создайте новый столбец в таблице с правильным типом
- заполнить его из старого столбца
- брось старый столбец
- переименовать новый столбец
SQL Aster:
ALTER TABLE a0q892.zf_predict ADD prediction_new int;
UPDATE TABLE a0q892.zf_predict SET prediction_new = CAST(prediction AS int);
ALTER TABLE a0q892.zf_predict DROP prediction;
ALTER TABLE a0q892.zf_predict RENAME prediction_new TO prediction;