更新“主键”列中的所有值

时间:2018-05-04 11:42:52

标签: sql sql-server

我有一个包含主键的表,其中值是目前1-4位数的ID号。例如:

  1. 100
  2. 101
  3. 102
  4. 103
  5. 我现在想在每个值的开头添加相同的文本,同时仍然保留ID的其余部分。例如,这就是我希望我的主键现在显示的方式:

    1. IN100
    2. IN101
    3. IN102
    4. IN104
    5. 有人可以描述一下如何做到这一点吗?我发现的任何搜索似乎都与在值的开头添加文本有关,同时保持其余部分相同。

2 个答案:

答案 0 :(得分:1)

CREATE NewTable
(
SNo INT,
ID VARCHAR(10)
)

INSERT INTO NewTable(SNo,ID)
    SELECT SNo,'IN'+CONVERT(varchar(10),ID)  FROM OldTable

--Finally drop your existing Old table 

DROP TABLE OldTable

答案 1 :(得分:0)

CONCAT()+解决了您的问题。听起来你想在表格中找到一个新的id。如果是这样,您可以更改表格:

alter table t add newid as ('IN' + convert(varchar(255), id));

这将允许您在引用该表的任何查询中查询新ID。

您可以通过执行以下操作来实际更新ID:

alter table t alter column id varchar(255);

update t
    set id =  'IN' + convert(varchar(255), id);

请注意,这可能会破坏外键引用。

然而,我认为拥有一个"来源"可能会更好。列作为表中的单独的列,并在id中对其进行编码。换句话说,也许您应该问另一个关于问题的问题,看看其他解决方案是否更适合。