У меня есть база данных SQL Server, и я только что понял, что могу изменить тип одного из столбцов с int
на bool
.
Как я могу сделать это без потери данных, которые уже введены в эту таблицу?
sql-server
sql-server-2008
alter
Иван Стоянов
источник
источник
Ответы:
Вы можете легко сделать это, используя следующую команду. Любое значение 0 будет превращено в 0 (BIT = false), все остальное будет превращено в 1 (BIT = true).
Другой вариант - создать новый столбец типа
BIT
, заполнить его из старого столбца, а после завершения отбросить старый столбец и переименовать новый в старое имя. Таким образом, если во время преобразования что-то пойдет не так, вы всегда можете вернуться назад, так как у вас все еще есть все данные.источник
NULL
остаетсяNULL
,0
становится , становятсяFalse
ненулевые значения (1, -1, 1999, -987 ...)True
.Примечание: если есть размер столбцов, просто напишите размер.
источник
Если это действительное изменение.
Вы можете изменить собственность.
Теперь вы можете легко изменить имя столбца без воссоздания таблицы или потери записей.
источник
Как вы думаете, почему вы потеряете данные? Просто зайдите в Management Studio и измените тип данных. Если существующее значение можно преобразовать в bool (бит), это будет сделано. Другими словами, если «1» соответствует значению true, а «0» соответствует значению false в исходном поле, все будет в порядке.
источник
если вы используете T-SQL (MSSQL); Вы должны попробовать этот скрипт:
если вы используете MySQL; Вы должны попробовать этот скрипт:
если вы используете Oracle; Вы должны попробовать этот скрипт:
источник
Перейдите в Tool-Option-designer-Table и Database конструкторы и снимите флажок Предотвратить сохранение
источник
Изменить тип данных столбца с типом проверки столбца:
источник
для меня в SQL Server 2016, я делаю это так
* Чтобы переименовать столбец Column1 в column2
* Чтобы изменить тип столбца из строки в int :( Пожалуйста, убедитесь, что данные в правильном формате )
источник
В компактной версии автоматически принимает размер для типа данных datetime, т. Е. (8), поэтому нет необходимости устанавливать размер поля и генерировать ошибку для этой операции ...
источник
Я могу изменить тип данных поля таблицы с помощью следующего запроса: а также в базе данных Oracle,
источник
Замените тип данных без потери данных
источник