sql >> Databasteknik >  >> RDS >> Sqlserver

Ändra en befintlig kolumn till en beräknad kolumn i SQL Server (T-SQL-exempel)

Den här artikeln visar hur man använder T-SQL för att ändra en befintlig kolumn till en beräknad kolumn i SQL Server.

En beräknad kolumn är en virtuell kolumn som använder ett uttryck för att beräkna dess värde. Uttrycket kommer vanligtvis att använda data från andra kolumner. En beräknad kolumn lagras inte fysiskt i tabellen om den inte är markerad med PERSISTED .

Exempel 1 – Skapa en tabell UTAN en beräknad kolumn

Låt oss först skapa en tabell utan en beräknad kolumn.

SKAPA TABELL Person ( PersonID int IDENTITET (1,1) INTE NULL, Förnamn varchar(70), Efternamn varchar(70), Fullständigt Namn varchar(140) );INSERT I Person (Förnamn, Efternamn, Fullnamn)VÄRDEN (' Homer', 'Seinfeld', 'Homer Seinfeld'), ('Bart', 'Costanza', 'Bart Costanza'), ('Marge', 'Kramer', 'Marge Kramer');VÄLJ *FRÅN Person; 

Resultat:

+------------+-------------+------------+------ ----------+| PersonID | Förnamn | Efternamn | Fullständigt namn ||------------+-------------+------------+------- ----------|| 1 | Homer | Seinfeld | Homer Seinfeld || 2 | Bart | Costanza | Bart Costanza || 3 | Marge | Kramer | Marge Kramer |+------------+-------------+------------+------ ----------+

Du kan se att jag fördubblas när jag infogar data. Det fullständiga namnet är en kombination av förnamn och efternamn, och jag skriver om denna information för varje rad.

Detta kan också orsaka problem vid uppdatering av tabellen. Jag måste komma ihåg att uppdatera två kolumner varje gång någon ändrade sitt för- eller andranamn (och tre kolumner om de ändrade båda).

Detta är en bra kandidat för en beräknad kolumn.

Exempel 2 – Ändra kolumnen till en beräknad kolumn

För att ändra en kolumn till en beräknad kolumn måste du först släppa kolumnen och sedan skapa den med den nya definitionen.

Så här ändrar du FullName kolumn till en beräknad kolumn.

ALTER TABLE Person DROP COLUMN FullName;ALTER TABLE Person ADD FullName AS (CONCAT(FirstName, ' ', Efternamn));

Vi har precis "ändrat" kolumnen FullName till en beräknad kolumn. Den sammanfogar FirstName och LastName kolumner.

Så här händer när vi väljer tabellens innehåll:

VÄLJ *FRÅN person;

Resultat:

+------------+-------------+------------+------ ----------+| PersonID | Förnamn | Efternamn | Fullständigt namn ||------------+-------------+------------+------- ----------|| 1 | Homer | Seinfeld | Homer Seinfeld || 2 | Bart | Costanza | Bart Costanza || 3 | Marge | Kramer | Marge Kramer |+------------+-------------+------------+------ ----------+

Exempel 3 – Uppdatera ett värde

Nu, om ett värde uppdateras i FirstName eller LastName kolumner, kommer detta att påverka värdet som returneras av den beräknade kolumnen. Du behöver inte uppdatera den i två kolumner.

Exempel:

UPPDATERA PersonSET LastName ='Bourne'WHERE PersonId =3;VÄLJ *FRÅN Person;

Resultat:

+------------+-------------+------------+------ ----------+| PersonID | Förnamn | Efternamn | Fullständigt namn ||------------+-------------+------------+------- ----------|| 1 | Homer | Seinfeld | Homer Seinfeld || 2 | Bart | Costanza | Bart Costanza || 3 | Marge | Bourne | Marge Bourne |+------------+-------------+------------+------ ----------+

  1. MySQL-UPPDATERING:Topp 5 tips för T-SQL-utvecklare

  2. Boolean Field i Oracle

  3. Infoga fråga för att infoga rader i MySQL

  4. Guide till designdatabas för restaurangordersystem i MySQL