1

compid主キー( )がcharであるが、番号付きIDのように見えるSQLSERVERデータベースがあります。DBには20,000台のコンピューターがあり、それぞれに独自の8桁のコードがあります(compid

例えば。私のコンピュータは28154326です。これはcharフィールドにあります。

私は50台のコンピューターに間違った番号を付けましたが、代わりに28184000 - 28184050入れ28154000 - 28154050ました。

この範囲のコンピューターを変更して、1台ずつ実行せずに正しいコンピューターを使用できるようにする方法はありますか?

これらは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

実行しようとしている1回限りの修正であると仮定して、次のようなことを試すことができます。

UPDATE compconfig
SET compid = REPLACE(compid, '2815', '2818')
WHERE compid BETWEEN '28154000' AND '28154050'
于 2012-09-14T10:03:07.757 に答える
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 に答える