如何更改列的数据types而不删除查询列?

我有一个数据types的列:datetime。 但是现在我想将其转换为数据typesvarchar。 我可以改变数据types而不丢弃列吗? 如果是,那么请解释一下?

如果ALTER COLUMN不起作用。

改变列失败并不罕见,因为它不能进行你想要的转换。 在这种情况下,解决scheme是创build一个虚拟表TableName_tmp,在批量插入命令中使用您的专用转换复制数据,删除原始表,并将tmp表重命名为原始表的名称。 您必须删除并重新创build外键约束,而为了提高性能,您可能需要在填充tmp表之后创build键。

听起来很多工作? 实际上并非如此。

如果您正在使用SQL Server,则可以使SQL Server Management Studio为您做好工作!

调出你的表格结构(右键单击表格并select“修改”),并进行所有更改(如果列转换是非法的,只需添加你的新列 – 你会修补一下)。 接下来,右键单击修改窗口的背景,然后select“生成更改脚本”。 在出现的窗口中,您可以将更改脚本复制到剪贴板。

取消修改(毕竟,您将要testing脚本),然后将脚本粘贴到新的查询窗口中。 根据需要进行修改(例如,在从tmp表声明中删除字段的同时添加转换),并且您现在具有进行转换所需的脚本。

MSDN说

ALTER TABLE mytable ALTER COLUMN mycolumn newtype 

注意文章中列出的ALTER COLUMN子句的限制

 ALTER TABLE YourTableNameHere ALTER COLUMN YourColumnNameHere VARCHAR(20) 
 ALTER TABLE [table name] MODIFY COLUMN [column name] datatype 
 ALTER TABLE YourTableNameHere ALTER COLUMN YourColumnNameHere VARCHAR(20) 

使用SQL Server 2008和更多,使用此查询:

 ALTER TABLE [RecipeInventorys] ALTER COLUMN [RecipeName] varchar(550) 

这很简单! 只需键入波纹pipe查询

alter table table_Name alter column column_name数据types

alter table Message alter column message nvarchar(1024);

它将开始快乐的编程

这适用于postgresql 9.0.3

  alter table [table name] ALTER COLUMN [column name] TYPE [character varying]; 

http://www.postgresql.org/docs/8.0/static/sql-altertable.html

 ALTER TABLE [table_name] ALTER COLUMN [column_name] varchar(150) 

ALTER TABLE YourTableNameHere ALTER COLUMN YourColumnNameHere VARCHAR(20)这是完美的更改为数据types

ORACLE – 修改表table_name修改(column_name new_DataType);

 ALTER TABLE table_name MODIFY (column_name data_type); 
 ALTER tablename MODIFY columnName newColumnType 

我不知道它是如何处理从datetime到varchar的变化,所以你可能需要重新命名列,添加一个新的名称和正确的数据types(varchar),然后写一个更新查询来填充从旧的新的列。

http://www.1keydata.com/sql/sql-alter-table.html

 alter table [table name] remove [present column name] to [new column name.