У меня есть база данных SQL Server, и я просто понял, что могу изменить тип одного из столбцов от int
до bool
.
Как я могу это сделать, не теряя данные, которые уже были введены в эту таблицу?
У меня есть база данных SQL Server, и я просто понял, что могу изменить тип одного из столбцов от int
до bool
.
Как я могу это сделать, не теряя данные, которые уже были введены в эту таблицу?
Вы можете легко сделать это, используя следующую команду. Любое значение 0 будет преобразовано в 0 (BIT = false), все остальное будет преобразовано в 1 (BIT = true).
ALTER TABLE dbo.YourTable
ALTER COLUMN YourColumnName BIT
Другой вариант - создать новый столбец типа BIT
, заполнить его из старого столбца, и как только вы закончите, отбросьте старый столбец и переименуйте новый в старое имя. Таким образом, если что-то во время преобразования идет не так, вы всегда можете вернуться назад, поскольку у вас все еще есть все данные.
Если это действительное изменение.
вы можете изменить свойство.
Инструменты → Параметры → Дизайнеры → Дизайнеры таблиц и баз данных → Снимите флажок → Предотвратите сохранение изменений, требующих повторного создания таблицы.
Теперь вы можете легко изменить имя столбца без воссоздания таблицы или потери записей ur.
ALTER TABLE tablename
ALTER COLUMN columnname columndatatype(size)
Примечание: если размер столбцов равен размеру, просто напишите размер.
Почему вы думаете, что потеряете данные? Просто зайдите в Management Studio и измените тип данных. Если существующее значение может быть преобразовано в bool (бит), оно сделает это. Другими словами, если "1" отображает true и "0" отображает false в вашем исходном поле, вы будете в порядке.
Перейдите в Design-Option-дизайнеры-дизайнеры таблиц и баз данных и снимите флажок "Предотвратить сохранение"
если вы используете 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)
В компактном издании автоматически будет выполняться размер для типа данных datetime i.e. (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;
Я могу изменить тип данных поля таблицы, используя следующие запросы: а также в Oracle DB,
ALTER TABLE table_name
MODIFY column_name datatype;
Заменить тип данных без потери данных
alter table tablename modify columnn newdatatype(size);