Dieser Artikel demonstriert die Verwendung von T-SQL zum Ändern einer vorhandenen Spalte in eine berechnete Spalte in SQL Server.
Eine berechnete Spalte ist eine virtuelle Spalte, die einen Ausdruck verwendet, um ihren Wert zu berechnen. Der Ausdruck verwendet normalerweise Daten aus anderen Spalten. Eine berechnete Spalte wird nicht physisch in der Tabelle gespeichert, es sei denn, sie ist mit PERSISTED
gekennzeichnet .
Beispiel 1 – Erstellen Sie eine Tabelle OHNE berechnete Spalte
Zuerst erstellen wir eine Tabelle ohne eine berechnete Spalte.
CREATE TABLE Person ( PersonID int IDENTITY (1,1) NOT NULL, FirstName varchar(70), LastName varchar(70), FullName varchar(140) );INSERT INTO Person (FirstName, LastName, FullName)VALUES (' Homer', 'Seinfeld', 'Homer Seinfeld'), ('Bart', 'Costanza', 'Bart Costanza'), ('Marge', 'Kramer', 'Marge Kramer');SELECT *FROM Person;Ergebnis:
+------------+------------+------------+------ ----------+| PersonenID | Vorname | Nachname | Vollständiger Name ||------------+------------+------------+------- ---------|| 1 | Homer | Seinfeld | Homer Seinfeld || 2 | Bart | Costanza | Bart Costanza || 3 | Marge | Krämer | Marge Kramer |+-----------+------------+------------+------ ----------+
Sie können sehen, dass ich verdopple, wenn ich Daten einfüge. Der vollständige Name ist eine Kombination aus dem Vornamen und dem Nachnamen, und ich gebe diese Daten für jede Zeile erneut ein.
Dies kann auch zu Problemen beim Aktualisieren der Tabelle führen. Ich muss daran denken, jedes Mal zwei Spalten zu aktualisieren, wenn jemand seinen Vor- oder Nachnamen geändert hat (und drei Spalten, wenn er beide geändert hat).
Dies ist ein guter Kandidat für eine berechnete Spalte.
Beispiel 2 – Ändern Sie die Spalte in eine berechnete Spalte
Um eine Spalte in eine berechnete Spalte zu ändern, müssen Sie die Spalte zuerst löschen und dann mit der neuen Definition erstellen.
So ändern Sie den FullName
Spalte in eine berechnete Spalte.
ALTER TABLE Person DROP COLUMN FullName;ALTER TABLE Person ADD FullName AS (CONCAT(FirstName, ' ', LastName));
Wir haben gerade die Spalte namens FullName
„geändert“. zu einer berechneten Spalte. Es verkettet den FirstName
und LastName
Spalten.
Folgendes passiert, wenn wir den Inhalt der Tabelle auswählen:
WÄHLEN SIE *FROM Person;
Ergebnis:
Beispiel 3 – Aktualisieren eines Werts
Wenn nun ein Wert im FirstName
aktualisiert wird oder LastName
Spalten, wirkt sich dies auf den Wert aus, der von der berechneten Spalte zurückgegeben wird. Keine Notwendigkeit, es in zwei Spalten zu aktualisieren.
Beispiel:
UPDATE PersonSET LastName ='Bourne'WHERE PersonId =3;SELECT *FROM Person;
Ergebnis: