Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

यह पता लगाने के 3 तरीके कि क्या कोई कॉलम SQL सर्वर में एक कंप्यूटेड कॉलम है

यह आलेख टी-एसक्यूएल का उपयोग करने के तीन तरीके प्रस्तुत करता है ताकि यह पता लगाया जा सके कि कॉलम एसक्यूएल सर्वर में एक गणना कॉलम है या नहीं।

यह तब होता है जब आप कॉलम का नाम जानते हैं, लेकिन आप यह नहीं जानते कि यह एक परिकलित कॉलम है या नहीं।

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             |
+---------------+

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. सी # में डेटाबेस में एकाधिक पैरामीटरयुक्त चर जोड़ना

  2. SQL सर्वर में पैरेंट टेबल, संदर्भ तालिका, विदेशी कुंजी बाधा नाम और कॉलम कैसे प्राप्त करें - SQL सर्वर / TSQL ट्यूटोरियल भाग 71

  3. SQL सर्वर TempDB मॉनिटरिंग डायनेमिक मैनेजमेंट व्यू (DMV) का उपयोग करके

  4. SQL सर्वर एजेंट शेड्यूल संशोधित करें (T-SQL)

  5. SQL सर्वर तालिका में पहचान कॉलम मान को कैसे रीसेट करें - SQL सर्वर / T-SQL ट्यूटोरियल भाग 43