sql >> Database >  >> RDS >> Sqlserver

Een bestaande kolom wijzigen in een berekende kolom in SQL Server (T-SQL-voorbeeld)

Dit artikel laat zien hoe u T-SQL kunt gebruiken om een ​​bestaande kolom te wijzigen in een berekende kolom in SQL Server.

Een berekende kolom is een virtuele kolom die een uitdrukking gebruikt om de waarde ervan te berekenen. De expressie gebruikt doorgaans gegevens uit andere kolommen. Een berekende kolom wordt niet fysiek opgeslagen in de tabel, tenzij deze is gemarkeerd als PERSISTED .

Voorbeeld 1 – Maak een tabel ZONDER een berekende kolom

Laten we eerst een tabel maken zonder een berekende kolom.

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;

Resultaat:

+------------+-------------+------------+----------------+
| PersonID   | FirstName   | LastName   | FullName       |
|------------+-------------+------------+----------------|
| 1          | Homer       | Seinfeld   | Homer Seinfeld |
| 2          | Bart        | Costanza   | Bart Costanza  |
| 3          | Marge       | Kramer     | Marge Kramer   |
+------------+-------------+------------+----------------+

Je kunt zien dat ik verdubbel als ik gegevens invoeg. De volledige naam is een combinatie van de voornaam en achternaam, en ik typ deze gegevens voor elke rij opnieuw.

Dit kan ook problemen veroorzaken bij het bijwerken van de tabel. Ik moet onthouden dat ik twee kolommen moet bijwerken wanneer iemand hun voor- of tweede naam heeft gewijzigd (en drie kolommen als ze beide hebben gewijzigd).

Dit is een goede kandidaat voor een berekende kolom.

Voorbeeld 2 – Verander de kolom in een berekende kolom

Als u een kolom wilt wijzigen in een berekende kolom, moet u eerst de kolom verwijderen en vervolgens maken met de nieuwe definitie.

Zo wijzigt u de FullName kolom naar een berekende kolom.

ALTER TABLE Person DROP COLUMN FullName;

ALTER TABLE Person ADD FullName AS (CONCAT(FirstName, ' ', LastName));

We hebben zojuist de kolom met de naam FullName "gewijzigd". naar een berekende kolom. Het voegt de FirstName . samen en LastName kolommen.

Dit is wat er gebeurt als we de inhoud van de tabel selecteren:

SELECT *
FROM Person;

Resultaat:

+------------+-------------+------------+----------------+
| PersonID   | FirstName   | LastName   | FullName       |
|------------+-------------+------------+----------------|
| 1          | Homer       | Seinfeld   | Homer Seinfeld |
| 2          | Bart        | Costanza   | Bart Costanza  |
| 3          | Marge       | Kramer     | Marge Kramer   |
+------------+-------------+------------+----------------+

Voorbeeld 3 – Een waarde bijwerken

Als nu een waarde wordt bijgewerkt in de FirstName of LastName kolommen, heeft dit invloed op de waarde die door de berekende kolom wordt geretourneerd. Het is niet nodig om het in twee kolommen bij te werken.

Voorbeeld:

UPDATE Person
SET LastName = 'Bourne'
WHERE PersonId = 3;

SELECT *
FROM Person;

Resultaat:

+------------+-------------+------------+----------------+
| PersonID   | FirstName   | LastName   | FullName       |
|------------+-------------+------------+----------------|
| 1          | Homer       | Seinfeld   | Homer Seinfeld |
| 2          | Bart        | Costanza   | Bart Costanza  |
| 3          | Marge       | Bourne     | Marge Bourne   |
+------------+-------------+------------+----------------+

  1. Door de Oracle-grootte van rij-ophaalacties hoger in te stellen, wordt mijn app langzamer?

  2. SQL, querybuilders en ORM's vergelijken

  3. 3 manieren om een ​​string te "unhexen" in MySQL

  4. Gebruikersaccountbeheer, rollen, machtigingen, authenticatie PHP en MySQL - Deel 3