我有SQL Server数据库,我刚刚意识到,我可以改变其中一列的类型从int到bool。
我怎样才能做到这一点而不丢失已经输入到表中的数据呢?
我有SQL Server数据库,我刚刚意识到,我可以改变其中一列的类型从int到bool。
我怎样才能做到这一点而不丢失已经输入到表中的数据呢?
您可以使用以下命令轻松完成此操作。任何0的值都将被转换为0 (BIT = false),任何其他值都将被转换为1 (BIT = true)。
ALTER TABLE dbo.YourTable
ALTER COLUMN YourColumnName BIT
另一种选择是创建一个BIT类型的新列,从旧列填充它,完成之后,删除旧列并将新列重命名为旧名称。这样,如果在转换过程中出现了问题,您可以随时返回,因为您仍然拥有所有数据。
为什么你认为你会丢失数据?只需进入Management Studio并更改数据类型。如果现有值可以转换为bool (bit),它就会这样做。换句话说,如果在原始字段中“1”映射为真,而“0”映射为假,那么就没问题。
ALTER TABLE tablename
ALTER COLUMN columnname columndatatype(size)
注意:如果列有大小,也只需写上大小即可。
如果这是一个有效的更改。
你可以改变属性。
工具—>选项—>设计器—>表和数据库设计器—> Uncheck—>防止保存需要重新创建表的更改。
现在,您可以轻松地更改列名,而无需重新创建表或丢失u r记录。
如果你使用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)
对我来说,在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;
使用检查类型更改列数据类型:
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