2011-12-26 60 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