我需要在我的一个表中更改列的数据类型,但是这个表包含数据我的问题是我不能清空表来完成我的目的所以我需要更改列数据类型而不会清空桌子。
我该怎么办?
答案 0 :(得分:2)
这里您最好的选择是创建一个包含相应列的新表new_table
。
创建后,根据需要将现有表table
的值插入此表中。只有这样才能重新引入约束等(如果你在插入之前这样做,你将会惩罚插入性能)。
完成后,将table
重命名为old_table
,将new_table
重命名为table
。
当然,您需要离线执行此操作。
答案 1 :(得分:-1)
你试过Alter Table
吗?ALTER TABLE table_name
MODIFY column_name column_type;
text,ntext和image列的数据类型只能通过以下方式更改:
text
至varchar(max)
,nvarchar(max)
或xml
ntext
至varchar(max)
,nvarchar(max)
或xml
image
至varbinary(max)
对于其他转换,您必须进行投射。请参考http://technet.microsoft.com/en-us/library/ms187928.aspx进行投射