2010-10-07 59 views
0

我有臺汽車將字符串轉換ID爲int自動增量

Id nvarchar(25) PK 
Name nvarchar(max) 

而且有一些記錄。

Id  Name 
CodeXYZ Namezxc 
CodeQAZ Nameasd 
CodeEDC Nameqwe 

我想轉換Id列到int自動增量:

Id  Name 
1 Namezxc 
2 Nameasd 
3 Nameqwe 

,但我不知道如何使它:/ 你能幫助我嗎?

+0

您是否試過在設計視圖中打開表格並將其更改爲int。當你保存它會給你一個警告,但應該保存。然後,將列設置爲標識規範爲true。假定該列中的數據都是整數,否則它可能不起作用。 – Kamal 2010-10-07 09:35:56

+0

所有記錄都是字符串:/ – user278618 2010-10-07 09:40:00

回答

1

在SQL Server Management Studio中,您可以右鍵單擊表並對其進行修改。

一旦在那裏,選擇你想自動增加的列。您應該可以將其更改爲INT。

然後看看列屬性;其中一個是IDENTITY,它是一個獨特的自動遞增字段。通過啓用該屬性並保存更改,您可以獲得所需的內容。

如果您在該字段中有重複,或者無法轉換爲INT的值,則會失敗。您需要在表上運行UPDATE以擺脫任何問題或首先複製。

編輯:

自己的留言 「的所有記錄都是字符串」。如果字符串值不會強制轉換爲INT,那麼您就無法得到要求。看起來像「AAABC」的字段不能自動遞增。

1

創建一個與第一個表(TBLA)的表結構相匹配的新表(TBLB),除了用ID列的int標識插入列創建第二個表。

然後

INSERT INTO TBLB (名稱) SELECT名字從TBLA

確保您,讓您不選擇或插入標識列映射列。

然後您可以刪除原始表並重命名新表。

這有點痛苦,但應該得到你想要的。您甚至可以向TBLB添加一列以將原始ID保留在新列中。

0

我不知道是否有可能與SQL Server,但與MySQL你可以使用:

SET @tempVariable := 0; 
UPDATE block SET id = (@tempVariable:[email protected]+1); 

的想法是發起遞增與UPDATE每一次的變量。