2010-10-07 78 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每一次的变量。