将列的字符串id转换为int autoincrement

时间:2010-10-07 09:22:44

标签: sql sql-server-2005

我有桌车

Id nvarchar(25) PK
Name nvarchar(max)

还有一些记录。

Id      Name
CodeXYZ Namezxc
CodeQAZ Nameasd
CodeEDC Nameqwe

我想将Id列转换为int autoincrement:

Id      Name
1 Namezxc
2 Nameasd
3 Nameqwe

但我不知道怎么做:/ 你能帮帮我吗?

3 个答案:

答案 0 :(得分:1)

创建一个与第一个表(TBLA)的表结构匹配的新表(TBLB),除了为您的ID列创建第二个带有int标识插入列的表。

然后

插入TBLB (名称) 选择名称来自TBLA

确保映射列,以便您不选择或插入Id列。

然后您可以删除原始表并重命名新表。

这有点痛苦,但应该得到你想要的。您甚至可以向TBLB添加一列以将原始ID保留在新列中。

答案 1 :(得分:1)

在SQL Server Management Studio中,您可以右键单击该表,然后对其进行修改。

进入后,选择要自动增加的列。您应该能够将其更改为INT。

然后查看列属性;其中一个是IDENTITY,这是一个独特的自动递增字段。通过启用该属性并保存更改,您可以获得所需的内容。

如果您在该字段中有重复项,或者无法转换为INT的值,则会失败。您需要在表上运行UPDATE以消除任何问题或首先重复。

修改

您发表了评论“所有记录都是字符串”。如果字符串值没有强制转换为INT,那么您无法满足要求。看起来像“AAABC”的字段不能自动递增。

答案 2 :(得分:0)

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

SET @tempVariable := 0;
UPDATE block SET id = (@tempVariable:=@tempVariable+1);

这个想法是启动一个每次使用UPDATE递增的变量。