217

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

如何在不丢失已输入该表的数据的情况下做到这一点?

4

11 回答 11

360

您可以使用以下命令轻松完成此操作。任何值为 0 的值都将变为 0(BIT = false),其他任何值都将变为 1(BIT = true)。

ALTER TABLE dbo.YourTable
   ALTER COLUMN YourColumnName BIT

另一种选择是创建一个 type 的新列,BIT从旧列中填充它,完成后,删除旧列并将新列重命名为旧名称。这样,如果在转换过程中出现问题,您可以随时返回,因为您仍然拥有所有数据。

于 2011-02-27T21:18:12.640 回答
27
ALTER TABLE tablename
ALTER COLUMN columnname columndatatype(size)

注意:如果有列的大小,也只写大小。

于 2015-07-08T03:09:21.660 回答
22

如果它是一个有效的变化。

您可以更改属性。

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

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

于 2016-07-25T06:50:41.523 回答
11

如果你使用 T-SQL(MSSQL); 你应该试试这个脚本:

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

如果你使用 MySQL;你应该试试这个脚本:

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

如果您使用甲骨文;你应该试试这个脚本:

ALTER TABLE [Employee] MODIFY [Salary] NUMERIC(22,5)
于 2017-09-21T13:32:37.057 回答
8

为什么你认为你会丢失数据?只需进入 Management Studio 并更改数据类型。如果现有值可以转换为布尔(位),它会这样做。换句话说,如果在您的原始字段中“1”映射为真,而“0”映射为假,那么您会没事的。

于 2011-02-27T21:19:59.343 回答
4

转到工具-选项-设计器-表和数据库设计器并取消选中阻止保存选项在此处输入图像描述

于 2017-05-31T06:05:34.623 回答
4

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

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
于 2019-02-26T09:13:09.143 回答
2

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

*将列 Column1 重命名为 column2

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

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

ALTER TABLE dbo.T_Table1 ALTER COLUMN Column2  int; 
于 2019-01-10T12:55:45.897 回答
0

在精简版中,将自动为日期时间数据类型(即(8))获取大小,因此无需设置字段大小并为此操作生成错误...

于 2016-07-07T07:34:13.363 回答
-3

我可以使用以下查询修改表字段的数据类型:以及在 Oracle DB 中,

ALTER TABLE table_name
MODIFY column_name datatype;
于 2017-06-20T05:25:07.130 回答
-5

替换数据类型而不丢失数据

alter table tablename modify columnn  newdatatype(size);
于 2017-03-21T05:00:49.313 回答