我有SQL Server数据库,我刚刚意识到,我可以改变其中一列的类型从int到bool。

我怎样才能做到这一点而不丢失已经输入到表中的数据呢?


当前回答

我可以修改表字段的数据类型,与以下查询:

ALTER TABLE table_name
MODIFY column_name datatype;

其他回答

对我来说,在sql server 2016,我这样做

将column n1重命名为column2

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

*将列类型从字符串修改为int:(请确保数据格式正确)

ALTER TABLE dbo.T_Table1 ALTER COLUMN Column2  int; 

如果这是一个有效的更改。

你可以改变属性。

工具—>选项—>设计器—>表和数据库设计器—> Uncheck—>防止保存需要重新创建表的更改。

现在,您可以轻松地更改列名,而无需重新创建表或丢失u r记录。

使用检查类型更改列数据类型:

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

进入工具-选项-设计器-表和数据库设计器,取消选中防止保存选项

在精简版中,将自动获取datetime数据类型的大小,即(8),因此不需要设置字段的大小并为此操作生成错误…