Es kann eine Teilantwort sein, können Sie eine Vorstellung auf der Abfrage erhalten basiert.
Mit dieser Abfrage können Sie eine Zeilennummer erstellen und eine automatische Inkrement-ID generieren.
Basierend auf diesem Wert können Sie mit der tatsächlichen Branch-Tabelle verbinden und entsprechend Ihrer Anforderung aktualisieren.
Proben Ausführung mit Beispieldaten:
CREATE TABLE Branch (
BranchId VARCHAR(7) NULL,
BranchName VARCHAR (500)
);
INSERT INTO Branch (BranchName) VALUES
('Branch 001'), ('Branch 002'), ('Branch 003'), ('Branch 004'), ('Branch 005'),
('Branch 006'), ('Branch 007'), ('Branch 008'), ('Branch 009'), ('Branch 010');
CREATE TABLE #Tmp_TableForBranchUpdate (BranchName VARCHAR (500), BranchId INT);
INSERT INTO #Tmp_TableForBranchUpdate (BranchName, BranchId)
SELECT BranchName, ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) BranchId
FROM Branch
UPDATE BR SET BranchId = TE.NewBrachId
FROM Branch BR
JOIN #Tmp_TableForBranchUpdate UT ON UT.BranchName = BR.BranchName
JOIN (
SELECT 'a' + REPLICATE('0', 6 - LEN(BranchId)) + CAST(BranchId AS VARCHAR) AS NewBrachId , BranchId
FROM (SELECT ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) BranchId FROM Branch) A
) TE ON TE.BranchId = UT.BranchId
DROP TABLE #Tmp_TableForBranchUpdate
-- SELECT * FROM Branch
Warum möchten Sie eine Schleife verwenden? Das ist der falsche Weg, um dieses Problem zu lösen. –
Ich möchte a00001, a00002 ... in eine existierende Tabelle mit einem Wert füllen, der momentan null ist. Eine Schleife zu verwenden ist einfacher –
Wenn Sie nur inkrementelle Zahlen generieren, verwenden Sie eine Identität und vergessen Sie das Präfix "a". Und wie @GordonLinoff schon gesagt hat. Eine Schleife ist völlig falsch dazu. Dies sollte eine einzelne Update-Anweisung sein, die wahrscheinlich ROW_NUMBER verwendet. –