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

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

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

Ответ 1

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

ALTER TABLE dbo.YourTable
   ALTER COLUMN YourColumnName BIT

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

Ответ 2

Если это действительное изменение.

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

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

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

Ответ 3

ALTER TABLE tablename
ALTER COLUMN columnname columndatatype(size)

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

Ответ 4

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

Ответ 5

Перейдите в Design-Option-дизайнеры-дизайнеры таблиц и баз данных и снимите флажок "Предотвратить сохранение" введите изображение описание здесь

Ответ 6

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

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

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

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

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

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

Ответ 7

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

Ответ 8

для меня в SQL Server 2016, я делаю это так

* Чтобы переименовать столбец Column1 в column2

EXEC sp_rename 'dbo.T_Table1.Column1', 'Column2', 'COLUMN'

* Чтобы изменить тип столбца из строки в int :(Пожалуйста, убедитесь, что данные в правильном формате)

ALTER TABLE dbo.T_Table1 ALTER COLUMN Column2  int; 

Ответ 9

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

ALTER TABLE table_name
MODIFY column_name datatype;

Ответ 10

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

alter table tablename modify columnn  newdatatype(size);