Artikel ini menyajikan tiga cara menggunakan T-SQL untuk mengetahui apakah kolom adalah kolom yang dihitung di SQL Server.
Ini untuk saat Anda mengetahui nama kolom, tetapi Anda tidak tahu apakah itu kolom yang dihitung atau tidak.
Fungsi COLUMNPROPERTY()
COLUMNPROPERTY()
fungsi mengembalikan informasi tentang kolom tertentu.
Salah satu properti yang diterima sebagai argumen oleh fungsi ini disebut IsComputed
. Anda akan mendapatkan 1 jika kolom dihitung, dan 0 jika tidak.
PILIH PROPERTI KOLOM( OBJECT_ID('dbo.Products'), 'TotalValue', 'IsComputed') AS [Kolom yang Dihitung?];
Hasil:
+--------------------+| Kolom yang Dihitung? ||--------------------||| 1 |+--------------------+
Dalam hal ini saya memeriksa untuk melihat apakah TotalValue
kolom adalah kolom yang dihitung, dan hasilnya adalah 1
, yang berarti kolom yang dihitung.
Tampilan Katalog Sistem sys.computed_columns
sys.computed_columns
tampilan katalog sistem berisi satu baris untuk setiap kolom yang dihitung dalam database. Oleh karena itu, Anda dapat menanyakan tampilan ini untuk melihat apakah kolom Anda dihitung.
SELECT is_computed AS [Kolom yang Dihitung?]FROM sys.computed_columnsWHERE name ='TotalValue';
Hasil:
+--------------------+| Kolom yang Dihitung? ||--------------------||| 1 |+--------------------+
Anda juga dapat menggunakan tampilan ini jika Anda hanya mengetahui nama tabel. Jika Anda tidak tahu nama kolomnya, tetapi Anda hanya mencoba mencari tahu apakah tabel berisi kolom yang dihitung, Anda dapat melakukan sesuatu seperti ini:
PILIH nama SEBAGAI [Kolom Terhitung]FROM sys.computed_columnsWHERE object_id =OBJECT_ID('dbo.Products');
Hasil:
+-------------------+| Kolom yang Dihitung ||-------------------|| TotalValue |+-------------------+
Dalam hal ini saya tahu nama tabelnya adalah Products
, jadi saya menggunakan OBJECT_ID()
untuk mendapatkan ID-nya dan mencocokkannya dengan object_id
kolom (yang merupakan ID objek tempat kolom tersebut berada).
Dalam contoh ini saya hanya mengembalikan satu kolom. Seperti halnya tampilan apa pun, Anda dapat mengembalikan kolom sebanyak yang Anda suka. Salah satu kolom dari tampilan ini berisi definisi kolom yang dihitung. Berikut kueri yang mengembalikan semua kolom.
SELECT *FROM sys.computed_columnsWHERE name ='TotalValue';
Hasil (menggunakan keluaran vertikal):
object_id | 814625945nama | TotalValuecolumn_id | 5system_type_id | 60user_type_id | 60max_length | 8presisi | skala 19 | 4kolasi_nama | NULLis_nullable | 1is_ansi_padded | 0is_rowguidcol | 0is_identitas | 0is_filestream | 0is_replika | 0is_non_sql_berlangganan | 0is_merge_published | 0is_dts_replicated | 0is_xml_document | 0xml_collection_id | 0default_object_id | 0rule_object_id | 0definisi | ([Jumlah]*[Harga])uses_database_collation | 1is_bertahan | 1is_dihitung | 1is_jarang | 0is_kolom_set | 0generated_always_type | 0generated_always_type_desc | NOT_APPLICABLEencryption_type | NULLenkripsi_tipe_desc | NULLenkripsi_algoritma_nama | NULLcolumn_encryption_key_id | NULLcolumn_encryption_key_database_name | NULLis_hidden | 0is_masked | 0graph_type | NULLgraph_type_desc | NULL
Tampilan Katalog Sistem sys.columns
sys.computed_columns
tampilan sebenarnya mewarisi is_computed
kolom (dan sekelompok kolom lainnya) dari sys.columns
. Oleh karena itu, Anda juga dapat menggunakan sys.columns
untuk memeriksa apakah kolom adalah kolom yang dihitung.
SELECT is_computedFROM sys.columnsWHERE name ='TotalValue';
Hasil:
+---------------+| is_computed ||---------------|| 1 |+---------------+