我有 SQL Server 数据库,我刚刚意识到我可以将其中一列的类型从int
更改为bool
.
如何在不丢失已输入该表的数据的情况下做到这一点?
我有 SQL Server 数据库,我刚刚意识到我可以将其中一列的类型从int
更改为bool
.
如何在不丢失已输入该表的数据的情况下做到这一点?
您可以使用以下命令轻松完成此操作。任何值为 0 的值都将变为 0(BIT = false),其他任何值都将变为 1(BIT = true)。
ALTER TABLE dbo.YourTable
ALTER COLUMN YourColumnName BIT
另一种选择是创建一个 type 的新列,BIT
从旧列中填充它,完成后,删除旧列并将新列重命名为旧名称。这样,如果在转换过程中出现问题,您可以随时返回,因为您仍然拥有所有数据。
ALTER TABLE tablename
ALTER COLUMN columnname columndatatype(size)
注意:如果有列的大小,也只写大小。
如果它是一个有效的变化。
您可以更改属性。
工具 --> 选项 --> 设计器 --> 表和数据库设计器 --> 取消选中 --> 防止保存需要重新创建表的更改。
现在您可以轻松更改列名,而无需重新创建表或丢失您的记录。
如果你使用 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)
为什么你认为你会丢失数据?只需进入 Management Studio 并更改数据类型。如果现有值可以转换为布尔(位),它会这样做。换句话说,如果在您的原始字段中“1”映射为真,而“0”映射为假,那么您会没事的。
使用列检查类型更改列数据类型:
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'
*将列类型从字符串修改为整数:(请确保数据格式正确)
ALTER TABLE dbo.T_Table1 ALTER COLUMN Column2 int;
在精简版中,将自动为日期时间数据类型(即(8))获取大小,因此无需设置字段大小并为此操作生成错误...
我可以使用以下查询修改表字段的数据类型:以及在 Oracle DB 中,
ALTER TABLE table_name
MODIFY column_name datatype;
替换数据类型而不丢失数据
alter table tablename modify columnn newdatatype(size);