1

我有一个带有主键 ( compid) 的 SQL SERVER 数据库,它是一个字符,但看起来像一个编号的 ID。我们的数据库中有 20,000 台计算机,每台计算机都有自己的 8 位代码 ( compid)

例如。我的电脑是28154326。这是在一个字符字段中。

我错误地编号了 50 台计算机,而不是28184000 - 28184050我把28154000 - 28154050.

有没有什么办法可以改变这一系列的计算机来获得正确的 compid 而无需逐一检查?

这些都在compconfig表中,所以要提取它们

select * from compconfig (nolock)
4

3 回答 3

3

这个查询能解决你的问题吗?

UPDATE compconfig 
SET compid=CAST(compid AS INT)+30000
WHERE CAST(compid AS INT) BETWEEN 28154000 AND 28154050

更新前请选择并确认。

于 2012-09-14T10:02:51.470 回答
0
;WITH CTE as 
(
select compid,28184000+ROW_NUMBER() over (order by (select 0)) rn from compconfig where CAST(compid AS INT) BETWEEN 28154000 AND 28154050
)

UPDATE CTE SET compid = rn
于 2012-09-14T11:03:30.673 回答
0

您可以尝试这样的事情,假设它是您尝试运行的一次性修复:

UPDATE compconfig
SET compid = REPLACE(compid, '2815', '2818')
WHERE compid BETWEEN '28154000' AND '28154050'
于 2012-09-14T10:03:07.757 回答