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

CHECKSUM () और BINARY_CHECKSUM () के बीच अंतर क्या हैं और उपयुक्त उपयोग परिदृश्य कब/क्या हैं?

निम्नलिखित ब्लॉग पोस्ट देखें जो मतभेदों को उजागर करता है।

http://decipherinfosys.wordpress. com/2007/05/18/checksum-functions-in-sql-server-2005/

इस लिंक से जानकारी जोड़ना:

CHECKSUM फ़ंक्शंस का मुख्य उद्देश्य अभिव्यक्ति या कॉलम सूची के आधार पर हैश इंडेक्स बनाना है। यदि आप कहते हैं कि आप इसका उपयोग तालिका स्तर पर एक कॉलम की गणना और स्टोर करने के लिए करते हैं, तो उन कॉलमों पर चेकसम को निरूपित करने के लिए जो किसी तालिका में एक रिकॉर्ड को अद्वितीय बनाते हैं, तो यह निर्धारित करने में सहायक हो सकता है कि कोई पंक्ति बदल गई है या नहीं। इस तंत्र का उपयोग उन सभी स्तंभों के साथ जुड़ने के बजाय किया जा सकता है जो रिकॉर्ड को विशिष्ट बनाते हैं यह देखने के लिए कि रिकॉर्ड अपडेट किया गया है या नहीं। SQL Server Books Online में कार्यक्षमता के इस भाग पर बहुत सारे उदाहरण हैं।

इन कार्यों का उपयोग करते समय कुछ बातों का ध्यान रखना चाहिए:

आपको यह सुनिश्चित करने की ज़रूरत है कि कॉलम या एक्सप्रेशन ऑर्डर दो चेकसमों के बीच समान है जिनकी तुलना की जा रही है अन्यथा मूल्य अलग होगा और इससे समस्याएं पैदा होंगी।

हम चेकसम (*) का उपयोग करने की अनुशंसा नहीं करेंगे क्योंकि इस तरह से उत्पन्न होने वाला मूल्य रन टाइम पर तालिका परिभाषा के कॉलम क्रम पर आधारित होगा जो आसानी से समय की अवधि में बदल सकता है। इसलिए, कॉलम लिस्टिंग को स्पष्ट रूप से परिभाषित करें।

सावधान रहें जब आप डेटाटाइम डेटा-प्रकार कॉलम शामिल करते हैं क्योंकि ग्रैन्युलैरिटी एक सेकंड का 1/300 वां है और यहां तक ​​​​कि एक छोटी सी भिन्नता के परिणामस्वरूप एक अलग चेकसम मान होगा। इसलिए, यदि आपको डेटाटाइम डेटा-टाइप कॉलम का उपयोग करना है, तो सुनिश्चित करें कि आपको सटीक तिथि + घंटा/मिनट मिल जाए। यानी आप जिस स्तर का विवरण चाहते हैं।

आपके लिए तीन चेकसम फ़ंक्शन उपलब्ध हैं:

चेकसम:यह ऊपर वर्णित किया गया था।

CHECKSUM_AGG:यह किसी समूह में मानों का चेकसम देता है और इस मामले में शून्य मानों को अनदेखा कर दिया जाता है। यह SQL सर्वर 2005 में नए विश्लेषणात्मक फ़ंक्शन के OVER क्लॉज़ के साथ भी काम करता है।

BINARY_CHECKSUM:जैसा कि नाम से पता चलता है, यह एक पंक्ति या अभिव्यक्तियों की सूची पर गणना किए गए बाइनरी चेकसम मान को लौटाता है। CHECKSUM और BINARY_CHECKSUM के बीच का अंतर स्ट्रिंग डेटा-प्रकारों के लिए उत्पन्न मान में है। इस तरह के अंतर का एक उदाहरण है "DECIPHER" और "decipher" के लिए उत्पन्न मान BINARY_CHECKSUM के मामले में भिन्न होंगे, लेकिन CHECKSUM फ़ंक्शन के लिए समान होंगे (यह मानते हुए कि हमारे पास इंस्टेंस की केस असंवेदनशील स्थापना है)। एक और अंतर भावों की तुलना में है। BINARY_CHECKSUM() समान मान देता है यदि दो भावों के तत्वों का प्रकार और बाइट प्रतिनिधित्व समान है। तो, "2Volvo Director 20" और "3Volvo Director 30" समान मान प्राप्त करेंगे, हालांकि CHECKSUM() फ़ंक्शन प्रकार का मूल्यांकन करता है और साथ ही दो स्ट्रिंग्स की तुलना करता है और यदि वे बराबर हैं, तो केवल वही मान वापस किया जाता है।

Example:
STRING              BINARY_CHECKSUM_USAGE    CHECKSUM_USAGE
------------------- ----------------------    -----------
2Volvo Director 20  -1356512636                -341465450
3Volvo Director 30  -1356512636                -341453853
4Volvo Director 40  -1356512636                -341455363


  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. एमएस एसक्यूएल तिथियों की तुलना करें?

  3. डिग्री () SQL सर्वर में उदाहरण

  4. SQL सर्वर (T-SQL) में अनुलग्नक के रूप में क्वेरी परिणाम ईमेल कैसे करें

  5. विभिन्न डेटाबेस से टेबल पर विदेशी कुंजी