Изменить тип столбца таблицы не работает в Астер - Я, вероятно, испортить его

Я использую 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;
Другие вопросы по тегам