यह आलेख टी-एसक्यूएल का उपयोग करने के तीन तरीके प्रस्तुत करता है ताकि यह पता लगाया जा सके कि कॉलम एसक्यूएल सर्वर में एक गणना कॉलम है या नहीं।
यह तब होता है जब आप कॉलम का नाम जानते हैं, लेकिन आप यह नहीं जानते कि यह एक परिकलित कॉलम है या नहीं।
COLUMNPROPERTY() फ़ंक्शन
COLUMNPROPERTY()
फ़ंक्शन किसी दिए गए कॉलम के बारे में जानकारी देता है।
इस फ़ंक्शन द्वारा तर्क के रूप में स्वीकृत गुणों में से एक को IsComputed
. कहा जाता है . यदि कॉलम की गणना की जाती है तो आपको 1 मिलेगा, और यदि नहीं तो 0 मिलेगा।
SELECT COLUMNPROPERTY( OBJECT_ID('dbo.Products'), 'TotalValue', 'IsComputed') AS [Computed Column?];
परिणाम:
+--------------------+ | Computed Column? | |--------------------| | 1 | +--------------------+
इस मामले में मैंने यह देखने के लिए जाँच की कि क्या TotalValue
कॉलम एक परिकलित कॉलम है, और परिणाम 1
. है , जिसका अर्थ है कि यह एक परिकलित स्तंभ है।
sys.computed_columns सिस्टम कैटलॉग व्यू
sys.computed_columns
सिस्टम कैटलॉग व्यू में डेटाबेस में प्रत्येक परिकलित कॉलम के लिए एक पंक्ति होती है। इसलिए आप यह देखने के लिए क्वेरी कर सकते हैं कि आपके कॉलम की गणना की गई है या नहीं।
SELECT is_computed AS [Computed Column?] FROM sys.computed_columns WHERE name = 'TotalValue';से चुनें
परिणाम:
+--------------------+ | Computed Column? | |--------------------| | 1 | +--------------------+
आप इस दृश्य का उपयोग तब भी कर सकते हैं जब आप केवल तालिका का नाम जानते हों। यदि आप कॉलम का नाम नहीं जानते हैं, लेकिन आप बस यह पता लगाने की कोशिश कर रहे हैं कि क्या टेबल एक परिकलित कॉलम है, आप कुछ इस तरह कर सकते हैं:
SELECT name AS [Computed Column] FROM sys.computed_columns WHERE object_id = OBJECT_ID('dbo.Products');
परिणाम:
+-------------------+ | Computed Column | |-------------------| | TotalValue | +-------------------+
इस मामले में मुझे पता था कि तालिका का नाम Products
था , इसलिए मैंने OBJECT_ID()
. का उपयोग किया उसकी आईडी प्राप्त करने के लिए और उसका मिलान object_id
. के साथ करने के लिए कॉलम (जो उस ऑब्जेक्ट की आईडी है जिससे कॉलम संबंधित है)।
इन उदाहरणों में मैं केवल एक कॉलम लौटा रहा हूँ। किसी भी दृश्य की तरह, आप जितने चाहें उतने कॉलम वापस कर सकते हैं। इस दृश्य के स्तंभों में से एक में परिकलित स्तंभ की परिभाषा है। यहां एक क्वेरी है जो सभी कॉलम लौटाती है।
SELECT * FROM sys.computed_columns WHERE name = 'TotalValue';
परिणाम (ऊर्ध्वाधर आउटपुट का उपयोग करके):
object_id | 814625945 name | TotalValue column_id | 5 system_type_id | 60 user_type_id | 60 max_length | 8 precision | 19 scale | 4 collation_name | NULL is_nullable | 1 is_ansi_padded | 0 is_rowguidcol | 0 is_identity | 0 is_filestream | 0 is_replicated | 0 is_non_sql_subscribed | 0 is_merge_published | 0 is_dts_replicated | 0 is_xml_document | 0 xml_collection_id | 0 default_object_id | 0 rule_object_id | 0 definition | ([Quantity]*[Price]) uses_database_collation | 1 is_persisted | 1 is_computed | 1 is_sparse | 0 is_column_set | 0 generated_always_type | 0 generated_always_type_desc | NOT_APPLICABLE encryption_type | NULL encryption_type_desc | NULL encryption_algorithm_name | NULL column_encryption_key_id | NULL column_encryption_key_database_name | NULL is_hidden | 0 is_masked | 0 graph_type | NULL graph_type_desc | NULL
sys.columns सिस्टम कैटलॉग व्यू
sys.computed_columns
व्यू वास्तव में इसका is_computed
प्राप्त करता है sys.columns
. से कॉलम (और अन्य कॉलम का एक गुच्छा) . इसलिए, आप sys.columns
. का भी उपयोग कर सकते हैं यह जांचने के लिए कि कोई कॉलम एक गणना कॉलम है या नहीं।
SELECT is_computed FROM sys.columns WHERE name = 'TotalValue';
परिणाम:
+---------------+ | is_computed | |---------------| | 1 | +---------------+