我有SQL Server数据库,我才意识到我可以将其中一个列的类型从int
更改为bool
。
如何在不丢失已输入该表的数据的情况下执行此操作?
您可以使用以下命令轻松完成此操作。任何值0都将变为0(BIT = false),其他任何值都将变为1(BIT = true)。
ALTER TABLE dbo.YourTable
ALTER COLUMN YourColumnName BIT
另一个选项是创建一个BIT
类型的新列,从旧列填充它,一旦完成,删除旧列并将新列重命名为旧名称。这样,如果转换过程中的某些内容出错,您可以随时返回,因为您仍然拥有所有数据。
如果是有效的更改。
你可以改变财产。
工具 - >选项 - >设计器 - >表和数据库设计者 - >取消选中 - >防止保存需要重新创建表的更改。
现在,您可以轻松更改列名,而无需重新创建表或丢失记录。
ALTER TABLE tablename
ALTER COLUMN columnname columndatatype(size)
注意:如果有列的大小,也只需写入大小。
为什么你认为你会丢失数据?只需进入Management Studio并更改数据类型即可。如果现有值可以转换为bool(bit),它就会这样做。换句话说,如果“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)
使用列的检查类型更改列数据类型:
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
对我来说,在sql server 2016中,我这样做
*将列Column1重命名为column2
EXEC sp_rename 'dbo.T_Table1.Column1', 'Column2', 'COLUMN'
*修改列类型从 字符串 到 int :( 请确保数据格式正确 )
ALTER TABLE dbo.T_Table1 ALTER COLUMN Column2 int;
在紧凑版中,将自动获取日期时间数据类型的大小,即(8),因此无需设置字段大小并为此操作生成错误...