我有SQL Server数据库,我刚刚意识到可以将其中一列的类型从int
更改为bool
。
如何做到这一点而又不会丢失已经输入到该表中的数据?
我有SQL Server数据库,我刚刚意识到可以将其中一列的类型从int
更改为bool
。
如何做到这一点而又不会丢失已经输入到该表中的数据?
Answers:
您可以使用以下命令轻松执行此操作。任何值0都将变为0(BIT = false),其他任何值都将变为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)
注意:如果有列大小,则也要写大小。
如果是有效的更改。
您可以更改属性。
工具->选项->设计器->表和数据库设计器->取消选中->防止保存需要重新创建表的更改。
现在,您可以轻松更改列名,而无需重新创建表或丢失您的记录。
为什么您会丢失数据?只需进入Management Studio并更改数据类型。如果现有值可以转换为bool(位),它将执行此操作。换句话说,如果您在原始字段中将“ 1”映射为true,将“ 0”映射为false,则可以。
如果您使用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)