Scénář:
Pracujete jako SQL Server Developer pro jednu z advokátních kanceláří. Vytvořili jste tabulku dbo.Customer pomocí níže uvedené definiceCREATE TABLE Customer ( CustomerId INT Identity(1, 1) ,FirstName VARCHAR(50) ,LastName VARCHAR(50) ,Age SMALLINT ,PhoneNumber CHAR(9) ,DOB DATE ,Gender CHAR(1) )
Musíte mít celé jméno, které by se mělo skládat z křestního jména a příjmení. Nechcete ukládat duplicitní data do tabulky přidáním nového sloupce pro Celé jméno. Jaké jsou vaše možnosti?
V závislosti na věku bychom také rádi přidali nový sloupec volání IsSenior a označili jej 1, pokud je vyšší než 65, jinak 0.
Řešení:
SQL Server nám poskytuje Computed Column, což je virtuální sloupec a neukládá data, pokud není označen jako Trvalý. To znamená, že můžeme vytvořit vypočítaný sloupec (Celé jméno), který bude používat data Jméno a Příjmení. Vytvořením Computed Column nemusíme ukládat duplicitní data pro celý sloupec Name.Pojďme do toho a vytvořte Computed Columns Full Name a IsSenior v závislosti na našich kritériích.
CREATE TABLE Customer ( CustomerId INT Identity(1, 1) ,FirstName VARCHAR(50) ,LastName VARCHAR(50) ,Age SMALLINT ,PhoneNumber CHAR(9) ,DOB DATE ,Gender CHAR(1) ,FullName AS FirstName + ' ' + LastName ,IsSenior AS CASE WHEN Age > 65 THEN 1 ELSE 0 END )Zřetězili jsme jméno a příjmení pro celé jméno a napsali Case Statement pro IsSenior Computer Column. Pokračujme a vložíme několik záznamů.
insert into dbo.Customer(FirstName,LastName,Age) Values('Aamir','Shahzad',66), ('Raza','M',44)
Všiml jsem si, že jsem nevložil nic do sloupců FullName a IsSenior. Hodnoty pro tyto sloupce budou vypočteny, když vybereme data.

Pokud musíte přidat Computed Column do ukončující tabulky můžete použít níže uvedenou syntaxi
Alter Table SchemaName.TableName
Add ColumnName AS Logic (např. FistName +''+LastName)
Řekněme, že pokud chceme přidat FullName Computer Column to Customer table, můžeme použít níže uvedený skript.
Alter table dbo.Customer Add FullName AS FirstName+' '+LastName
Vypustit vypočítaný sloupec z tabulky serveru SQL:
Syntaxe pro odstranění vypočítaného nebo normálního sloupce je stejná.
Změnit název schématu tabulky.název_tabulky
vypustit název sloupce
Řekněme, že chceme vypustit FullName vypočítaný sloupec z tabulky dbo.Customer. Můžeme použít níže uvedený skript.
Alter table dbo.Customer drop column FullName