Как изменить тип данных столбца в базе данных SQL без потери данных


у меня есть база данных SQL Server, и я только что понял, что могу изменить тип одного из столбцов из int до bool.

Как я могу сделать это без потери данных, которые уже вступили в эту таблицу?

9 160

9 ответов:

вы можете легко сделать это с помощью следующей команды. Любое значение 0 будет превращено в 0 (бит = false), все остальное будет превращено в 1 (бит = true).

ALTER TABLE dbo.YourTable
   ALTER COLUMN YourColumnName BIT

другой вариант-создать новый столбец типа BIT, заполните его из старого столбца, и как только вы закончите, удалите старый столбец и переименуйте новый в старое имя. Таким образом, если что-то во время преобразования пойдет не так, вы всегда можете вернуться, так как у вас все еще есть все данные..

Если это допустимое изменение.

вы можете изменить свойство.

Инструменты -- > Параметры -- > конструкторы -- > конструкторы таблиц и баз данных -- > снимите флажок -- > запретить сохранение изменений, требующих повторного создания таблицы.

теперь вы можете легко изменить имя столбца без повторного создания таблицы или потери записей u r.

ALTER TABLE tablename
ALTER COLUMN columnname columndatatype(size)

Примечание: если есть размер столбцов, просто напишите размер также.

Почему вы думаете, что вы потеряете данные? Просто зайдите в Management Studio и измените тип данных. Если существующее значение может быть преобразовано в bool (бит), это будет сделано. Другими словами, если "1" соответствует true и "0" соответствует false в исходном поле, вы будете в порядке.

перейдите в раздел инструмент-опция-конструкторы - таблица и база данных конструкторы и снимите флажок запретить сохранение опцииenter image description here

Если вы используете T-SQL (MSSQL); вы должны попробовать этот скрипт:

ALTER TABLE [Employee] ALTER COLUMN [Salary] NUMERIC(22,5)

Если вы используете MySQL, вы должны попробовать этот скрипт:

ALTER TABLE [Employee] MODIFY COLUMN [Salary] NUMERIC(22,5)

Если вы используете Oracle, вы должны попробовать этот скрипт:

ALTER TABLE [Employee] MODIFY [Salary] NUMERIC(22,5)

в compact edition будет автоматически принимать размер для типа данных datetime т. е. (8) поэтому нет необходимости устанавливать размер поля и генерировать ошибку для этой операции...

Я могу изменить тип данных поля таблицы, с помощью следующих запросов: а также в БД Oracle,

ALTER TABLE table_name
MODIFY column_name datatype;

заменить тип данных без потери данных

alter table tablename modify columnn  newdatatype(size);