2011-01-27 89 views
0

我有一張表,稱之爲課程,名爲courseCode的列。SQL Server列轉換

目前列類型是tinyInt,但我需要將其轉換爲一個varchar,因爲它現在需要存儲'A'。在任何人因爲糟糕的設計而跳上我之前,我沒有設計這張桌子......哈哈。

此刻

無論如何,表只存儲數字0到9

這是那麼簡單,下面的語句?

ALTER TABLE dbo.Course 
ALTER COLUMN courseCode VARCHAR(30) 

或者這會導致不必要的轉換問題?我從來沒有做過這樣的事情,並希望聽到一些關於轉換列類型的最佳實踐,當您的客戶端使用舊類型存儲數據時。謝謝。

回答

0

檢查是否有約束或默認值附加到該列。 (SUB您的實際表mytable

sp_help mytable 

檢查默認設置,檢查,外鍵,索引,唯一,主鍵 - 任何

如果有任何附加到列,你將不得不放棄他們並在轉換後重新創建。

ALTER TABLE dbo.Course 
ALTER COLUMN courseCode VARCHAR(30) 

實際操作正確率100%,爲TINYINT至少。只要大小合適,幾乎所有的東西都可以轉換成SQL Server中的varchar *。

我也是正確調整列大小的忠實粉絲,所以如果您需要從0-9擴展到1字符alpha,只需使用Char(1)即可。

*有一些像GUID這樣的異常,需要通過varchar(max),然後減小到最大。

0

這應該適用於您的特定數據類型轉換。其他人可能會給你一個頭痛的問題,但tinyint to varchar的很直...

0

我認爲這就夠了......只要與該領域相關的某些約束不會阻止你。找出最好的方法是製作你的數據庫副本並嘗試複製。