2011-12-26 63 views
1

我需要改变我的一个表中列的数据类型,但这个表包含数据我的问题是我不能清空表来做我的目的,所以我需要在不清空表的情况下更改列数据类型。改变列的数据类型

我该怎么办?

+6

请您介绍一下原始和目标列的类型吗? – rajah9 2011-12-26 14:41:57

+0

修改数据以满足目标数据类型的需求,然后修改表。 – xQbert 2011-12-26 15:11:38

回答

2

您的最佳选择是创建一个带有相应列的新表new_table

创建完成后,根据需要将现有表table的值插入此表中。只有这样才能重新引入约束条件等(如果在插入前执行此操作,则会影响插入性能)。

完成后,将table重命名为old_tablenew_tabletable

当然,您需要在脱机状态下执行此操作。

0

你试过ALTER TABLE

ALTER TABLE table_name 
MODIFY column_name column_type; 

文本的数据类型,ntext和image列只能在以下几个方面有所变化:

  • textvarchar(max)nvarchar(max),或xml
  • ntextvarchar(max)nvarchar(max)xml
  • imagevarbinary(max)

对于其他转换,你将不得不做铸造。请参考http://technet.microsoft.com/en-us/library/ms187928.aspx进行铸造

+2

'ALTER TABLE ... MODIFY ...'是无效的SQL Server语法。 – 2011-12-26 14:56:56

+0

它必须是'ALTER TABLE(table_name)ALTER COLUMN(column_name).....'才能对SQL Server有效 – 2011-12-26 16:17:48