Di SQL Server, ada beberapa tampilan katalog sistem yang memungkinkan Anda mendapatkan daftar kolom yang dihitung dalam database.
Salah satu tampilan ini disebut sys.computed_columns
. Yang lainnya adalah sys.columns
.
Tampilan sys.computed_columns
sys.computed_columns
tampilan katalog sistem berisi satu baris untuk setiap kolom yang dihitung dalam database. Oleh karena itu, Anda dapat menjalankan kueri sederhana untuk mendapatkan daftar kolom yang dihitung.
SELECT OBJECT_NAME(object_id) AS [Parent], name AS [Computed Column], definition, is_persisted FROM sys.computed_columns;
Hasil:
+----------+-------------------+--------------------------------------+----------------+ | Parent | Computed Column | definition | is_persisted | |----------+-------------------+--------------------------------------+----------------| | Person | FullName | (concat([FirstName],' ',[LastName])) | 0 | | Products | TotalValue | ([Quantity]*[Price]) | 1 | +----------+-------------------+--------------------------------------+----------------+
Sebagian besar kolom tampilan ini diwarisi dari sys.columns
melihat. Saya hanya menyertakan beberapa di sini.
Salah satu manfaat tampilan ini pada sys.columns
, apakah itu mengembalikan definisi kolom yang dihitung, yang mungkin berguna tergantung pada situasinya. Ini juga termasuk is_persisted
flag, yang memberi tahu Anda apakah kolom yang dihitung tetap ada atau tidak. Jika kolom dipertahankan, nilai kolom yang dihitung secara fisik disimpan dalam tabel. Jika tidak, itu dihitung pada saat Anda menanyakan kolom.
Tampilan sys.columns
Anda juga dapat menjalankan kueri terhadap sys.columns
untuk mengembalikan kolom yang dihitung. Jika Anda melakukan ini, Anda harus memfilter hasil agar hanya menyertakan kolom yang dihitung. Anda dapat melakukannya dengan WHERE
klausa pada is_computed
kolom.
Contoh:
SELECT OBJECT_NAME(object_id) as Parent, name AS [Computed Column] FROM sys.columns WHERE is_computed = 1;
Hasil:
+----------+-------------------+ | Parent | Computed Column | |----------+-------------------| | Person | FullName | | Products | TotalValue | +----------+-------------------+
Tampilan ini tidak mengandung definition
, is_persisted
, atau uses_database_collation
kolom yang sys.computed_columns
berisi.