Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Ändern einer vorhandenen Spalte in eine berechnete Spalte in SQL Server (T-SQL-Beispiel)

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:

+------------+------------+------------+------ ----------+| PersonenID | Vorname | Nachname | Vollständiger Name ||------------+------------+------------+------- ---------|| 1 | Homer | Seinfeld | Homer Seinfeld || 2 | Bart | Costanza | Bart Costanza || 3 | Marge | Krämer | Marge Kramer |+-----------+------------+------------+------ ----------+

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:

+------------+------------+------------+------ ----------+| PersonenID | Vorname | Nachname | Vollständiger Name ||------------+------------+------------+------- ---------|| 1 | Homer | Seinfeld | Homer Seinfeld || 2 | Bart | Costanza | Bart Costanza || 3 | Marge | Bourne | Marge Bourne |+------------+------------+------------+------ ----------+