Artikel ini menunjukkan cara menggunakan T-SQL untuk mengubah kolom yang ada menjadi kolom yang dihitung di SQL Server.
kolom terhitung adalah kolom virtual yang menggunakan ekspresi untuk menghitung nilainya. Ekspresi biasanya akan menggunakan data dari kolom lain. Kolom yang dihitung tidak disimpan secara fisik dalam tabel kecuali jika ditandai PERSISTED
.
Contoh 1 – Membuat Tabel TANPA Kolom Terhitung
Pertama, mari kita buat tabel tanpa kolom yang dihitung.
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;Hasil:
+-------------+-------------+------------+------ ----------+| ID Orang | Nama Depan | Nama Belakang | Nama Lengkap ||-------------+-------------+------------+------- ---------|| 1 | Homer | Seinfeld | Homer Seinfeld || 2 | Bart | Costanza | Bart Costanza || 3 | Marge | Kramer | Marge Kramer |+------------+-------------+------------+------ ----------+Anda dapat melihat bahwa saya menggandakan ketika saya memasukkan data. Nama lengkap adalah kombinasi dari nama depan dan nama belakang, dan saya mengetik ulang data ini untuk setiap baris.
Ini juga dapat menyebabkan masalah saat memperbarui tabel. Saya harus ingat untuk memperbarui dua kolom setiap kali seseorang mengubah nama depan atau kedua mereka (dan tiga kolom jika mereka mengubah keduanya).
Ini adalah kandidat yang baik untuk kolom yang dihitung.
Contoh 2 – Ubah Kolom menjadi Kolom Terhitung
Untuk mengubah kolom menjadi kolom yang dihitung, Anda harus menghapus kolom terlebih dahulu, lalu membuatnya dengan definisi baru.
Berikut cara mengubah
FullName
kolom ke kolom yang dihitung.ALTER TABLE Person DROP COLUMN FullName;ALTER TABLE Person ADD FullName AS (CONCAT(FirstName, ' ', LastName));Kami baru saja “mengubah” kolom bernama
FullName
ke kolom yang dihitung. Ini menggabungkanFirstName
danLastName
kolom.Inilah yang terjadi ketika kita memilih isi tabel:
PILIH *FROM Orang;Hasil:
+-------------+-------------+------------+------ ----------+| ID Orang | Nama Depan | Nama Belakang | Nama Lengkap ||-------------+-------------+------------+------- ---------|| 1 | Homer | Seinfeld | Homer Seinfeld || 2 | Bart | Costanza | Bart Costanza || 3 | Marge | Kramer | Marge Kramer |+------------+-------------+------------+------ ----------+Contoh 3 – Perbarui Nilai
Sekarang, jika nilai diperbarui di
FirstName
atauLastName
kolom, ini akan mempengaruhi nilai yang dikembalikan oleh kolom yang dihitung. Tidak perlu memperbaruinya dalam dua kolom.Contoh:
PERBARUI PersonSET LastName ='Bourne'WHERE PersonId =3;SELECT *FROM Person;Hasil:
+-------------+-------------+------------+------ ----------+| ID Orang | Nama Depan | Nama Belakang | Nama Lengkap ||-------------+-------------+------------+------- ---------|| 1 | Homer | Seinfeld | Homer Seinfeld || 2 | Bart | Costanza | Bart Costanza || 3 | Marge | Bourne | Marge Bourne |+------------+-------------+------------+------ ----------+