У мене є база даних SQL Server, і я щойно зрозумів, що можу змінити тип однієї колонки з int
на bool
.
Як я можу це зробити, не втрачаючи даних, які вже внесені до цієї таблиці?
У мене є база даних SQL Server, і я щойно зрозумів, що можу змінити тип однієї колонки з int
на bool
.
Як я можу це зробити, не втрачаючи даних, які вже внесені до цієї таблиці?
Відповіді:
Ви можете легко зробити це за допомогою наступної команди. Будь-яке значення 0 перетвориться на 0 (BIT = хибне), все інше перетвориться на 1 (BIT = true).
ALTER TABLE dbo.YourTable
ALTER COLUMN YourColumnName BIT
Іншим варіантом буде створити новий стовпчик типу BIT
, заповнити його зі старого стовпця, і як тільки ви закінчите, киньте старий стовпець і перейменуйте новий на старе ім'я. Таким чином, якщо щось під час конверсії піде не так, ви завжди можете повернутися назад, оскільки у вас є всі дані ..
NULL
залишається NULL
, 0
стає , стають False
ненульові значення (1, -1, 1999, -987 ...) True
.
ALTER TABLE tablename
ALTER COLUMN columnname columndatatype(size)
Примітка: якщо розмір стовпців є, просто також напишіть розмір.
Якщо це дійсна зміна.
ви можете змінити властивість.
Інструменти -> Опції -> Дизайнери -> Дизайнери таблиць і баз даних -> Зніміть прапорець -> Попередити збереження змін, які потребували відтворення таблиці.
Тепер ви можете легко змінити назву стовпця, не відтворюючи таблицю або втрачаючи записи ур.
Чому, на вашу думку, ви втратите дані? Просто перейдіть у студію управління та змініть тип даних. Якщо існуюче значення можна перетворити на bool (біт), воно зробить це. Іншими словами, якщо "1" відобразить істинне, а "0" - неправдиве у своєму початковому полі, ви будете добре.
якщо ви використовуєте 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)
Перейдіть до конструкторів інструментів-опцій-дизайнерів таблиць і баз даних та зніміть прапорець Попередження збереження
Змінення типу даних стовпця з типом стовпця:
IF EXISTS(
SELECT 1
FROM sys.columns
WHERE NAME = 'YourColumnName'
AND [object_id] = OBJECT_ID('dbo.YourTable')
AND TYPE_NAME(system_type_id) = 'int'
)
ALTER TABLE dbo.YourTable ALTER COLUMN YourColumnName BIT
для мене, на сервері sql 2016, я це роблю так
* Перейменувати стовпець1 у стовпчик2
EXEC sp_rename 'dbo.T_Table1.Column1', 'Column2', 'COLUMN'
* Щоб змінити тип стовпця від рядка до int :( Будьте впевнені, що дані мають правильний формат )
ALTER TABLE dbo.T_Table1 ALTER COLUMN Column2 int;
Замініть тип даних без втрати даних
alter table tablename modify columnn newdatatype(size);