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

SQL सर्वर में कंप्यूटेड कॉलम क्या है?

SQL सर्वर में, एक गणना कॉलम एक वर्चुअल कॉलम है जो इसके मूल्य की गणना करने के लिए एक अभिव्यक्ति का उपयोग करता है।

एक परिकलित स्तंभ आमतौर पर इसकी गणना में अन्य स्तंभों के डेटा का उपयोग करेगा। यदि इनमें से किसी भी कॉलम में डेटा अपडेट किया जाता है, तो परिकलित कॉलम स्वचालित रूप से इसकी गणना में अपडेट को प्रतिबिंबित करेगा।

गणना किए गए कॉलम का उदाहरण

+------------+-------------+------------+----------------+
| PersonID   | FirstName   | LastName   | FullName       |
|------------+-------------+------------+----------------|
| 1          | Homer       | Seinfeld   | Homer Seinfeld |
| 2          | Bart        | Costanza   | Bart Costanza  |
| 3          | Marge       | Kramer     | Marge Kramer   |
+------------+-------------+------------+----------------+

इस उदाहरण में, FullName कॉलम एक परिकलित कॉलम है। यह FirstName . से मानों को जोड़ता है और LastName कॉलम पूरे नाम की गणना करने के लिए।

गणना किए गए कॉलम के बिना, यदि आप पूरा नाम चुनना चाहते हैं, तो आपको कुछ ऐसा करना होगा:

SELECT FirstName + ' ' + LastName AS FullName
FROM Person;

या आप CONCAT() . का उपयोग कर सकते हैं समारोह, इस तरह:

SELECT CONCAT(FirstName, ' ', LastName) AS FullName
FROM Person;

हर बार जब आप तालिका से एक पूरा नाम चुनना चाहते हैं, तो आपको अपनी क्वेरी में संयोजन शामिल करना होगा।

लेकिन ऊपर दिए गए कॉलम की तरह परिकलित कॉलम का उपयोग करके, आप यह कर सकते हैं:

SELECT FullName
FROM Person;

गणना कॉलम के लाभ

गणना किए गए कॉलम क्वेरी लिखते समय समय बचा सकते हैं, त्रुटियों को कम कर सकते हैं और यहां तक ​​कि प्रदर्शन में सुधार भी कर सकते हैं।

यदि आप स्वयं को बार-बार एक ही क्वेरी को बार-बार चलाते हुए पाते हैं, तो परिकलित कॉलम आसान हो सकते हैं, खासकर यदि वह क्वेरी व्यावसायिक नियमों पर आधारित है जो शायद ही कभी बदलते हैं।

पिछले उदाहरण में परिकलित कॉलम हमें भविष्य में बहुत समय बचा सकता है, क्योंकि हर बार जब हम किसी का पूरा नाम चुनना चाहते हैं तो हमें पहले नाम और अंतिम नाम को जोड़ने की आवश्यकता नहीं होगी।

उपयोग के मामलों के उदाहरण

जहां परिकलित कॉलम उपयोगी हो सकता है, उसके उदाहरणों में शामिल हैं:

  • किसी अन्य कॉलम में किसी व्यक्ति की जन्म तिथि के आधार पर उसकी आयु की गणना करना
  • पहला नाम और उपनाम एक कॉलम में पहले नाम और दूसरे में अंतिम नाम के आधार पर जोड़ना
  • एक कॉलम में स्टॉक में उत्पादों की संख्या और दूसरे में कीमत के आधार पर किसी उत्पाद के इन्वेंट्री मूल्य की गणना करना
  • किसी अन्य कॉलम में किसी व्यक्ति की ऊंचाई और वजन के आधार पर उसके बीएमआई (बॉडी मास इंडेक्स) की गणना करें
  • एक "रैंक" कॉलम बनाना जो अन्य कॉलम के मानों के आधार पर पंक्तियों को रैंक करता है
  • मैराथन धावकों के दौड़ के समय की गणना, उनके प्रारंभ समय और समाप्ति समय के आधार पर अन्य स्तंभों में करना

गणना किए गए स्तंभों की दृढ़ता

एक परिकलित स्तंभ तालिका में भौतिक रूप से तब तक संग्रहीत नहीं होता जब तक कि उस पर PERSISTED चिह्नित न हो .

अगर यह नहीं है एक सतत गणना कॉलम, गणना हर बार तालिका तक पहुंचने पर होगी।

अगर यह है एक स्थायी गणना कॉलम, गणना मूल्य तालिका में भौतिक रूप से संग्रहीत किया जाता है। मतलब, हर बार जब आप कोई क्वेरी चलाते हैं तो इसके मूल्य की गणना करने की आवश्यकता नहीं होती है। यदि डेटा को किसी एक कॉलम में अपडेट किया जाता है जिसके लिए वह अपना मान प्राप्त करता है, तो परिकलित कॉलम का मान अपडेट किया जाता है और तालिका में संग्रहीत किया जाता है। यह प्रदर्शन में मदद कर सकता है।

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

एक गैर-नियतात्मक कॉलम वह है जो एक ही इनपुट के साथ भी अलग-अलग मान देता है। उदाहरण के लिए, यदि आप अपनी गणना में वर्तमान तिथि का उपयोग करते हैं, तो मान हर दिन अलग होगा, और इसे गैर-नियतात्मक माना जाएगा।

यदि आप केवल पहले नाम और अंतिम नाम को जोड़ रहे हैं, तो यह नियतात्मक होगा, और आप इस तरह के कॉलम को जारी रख सकते हैं।

गणना कॉलम बनाना

आप SSMS GUI से या Transact-SQL के साथ परिकलित कॉलम बना सकते हैं।

एसएसएमएस में

SSMS में, जबकि टेबल डिज़ाइनर . में , वह स्तंभ बनाएं जिसे आप परिकलित स्तंभ बनना चाहते हैं (या यदि वह पहले से मौजूद है तो उसे चुनें), फिर स्तंभ गुण के अंतर्गत टैब में, अपना सूत्र गणना स्तंभ विशिष्टता . में दर्ज करें संपत्ति क्षेत्र।

गणना किए गए कॉलम को डेटा प्रकार देने के बारे में चिंता न करें - SQL सर्वर इसे आपके सूत्र के आधार पर एक डेटा प्रकार देगा।

आप हां . भी चुन सकते हैं के लिए जारी है यदि आप चाहते हैं।

T-SQL का उपयोग करना

Transact-SQL का उपयोग करके एक परिकलित कॉलम बनाने के उदाहरण के लिए T-SQL का उपयोग करके SQL सर्वर में एक कंप्यूटेड कॉलम बनाएं देखें।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर डेटाबेस में सभी तालिकाओं के लिए पंक्ति गणना कैसे प्राप्त करें?

  2. बहु-भाग पहचानकर्ता बाध्य नहीं हो सका

  3. SQL सर्वर (T-SQL) में डेटाबेस मेल प्रोफ़ाइल अपडेट करें

  4. SQL सर्वर में @@MAX_CONNECTIONS कैसे काम करता है

  5. SQL सर्वर 2017 में सुरक्षा सुविधाएँ