如何在不丢失数据的情况下更改SQL数据库中的列数据类型

问题描述 投票:192回答:11

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

我如何做到这一点而又不会丢失已经输入到该表中的数据?

sql-server sql-server-2008 alter
11个回答
319
投票

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

ALTER TABLE dbo.YourTable
   ALTER COLUMN YourColumnName BIT

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


-2
投票

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


-3
投票

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


-3
投票

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


20
投票
ALTER TABLE tablename
ALTER COLUMN columnname columndatatype(size)

19
投票

如果是有效的更改。


8
投票

为什么您会丢失数据?只需进入Management Studio并更改数据类型。如果现有值可以转换为bool(位),它将执行此操作。换句话说,如果您在原始字段中将“ 1”映射为true,将“ 0”映射为false,则可以。


4
投票

如果使用T-SQL(MSSQL);您应该尝试以下脚本:


3
投票

转到“工具-选项-设计器-表和数据库设计器,然后取消选中阻止保存选项enter image description here


2
投票

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


1
投票

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


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.