एल्गोरिथ्म यहाँ SQL सर्वर लोगों द्वारा प्रलेखित है:SQL सर्वर 2005 में GUID की तुलना कैसे की जाती है? मैं यहाँ उद्धरण देता हूँ (क्योंकि यह एक पुराना लेख है जो कुछ वर्षों में हमेशा के लिए समाप्त हो सकता है)
<ब्लॉकक्वॉट>सामान्य तौर पर, समानता की तुलना अद्वितीय पहचानकर्ता मूल्यों के साथ बहुत मायने रखती है। हालांकि, अगर आपको लगता है कि आपको सामान्य क्रम की आवश्यकता है, तो आप गलत डेटा प्रकार देख रहे होंगे और इसके बजाय विभिन्न पूर्णांक प्रकारों पर विचार करना चाहिए।
यदि, सावधानीपूर्वक विचार करने के बाद, आप एक अद्वितीय पहचानकर्ता कॉलम पर ऑर्डर करने का निर्णय लेते हैं, तो आपको जो वापस मिलता है उससे आप आश्चर्यचकित हो सकते हैं।
इन दो अद्वितीय पहचानकर्ता मानों को देखते हुए:
@g1='55666BEE-B3A0-4BF5-81A7-86FF976E763F' @g2 ='8DD5BCA5-6ABE-4F73-B4B7-393AE6BBB849'
बहुत से लोग सोचते हैं कि @g1 @g2 से कम है, क्योंकि '55666BEE' निश्चित रूप से '8DD5BCA5' से छोटा है। हालांकि, ऐसा नहीं है कि SQL Server2005 अद्वितीय पहचानकर्ता मानों की तुलना कैसे करता है।
तुलना बाइट "समूहों" को दाएं से बाएं, और बाएं से दाएं बाइट "समूह" के भीतर देखकर की जाती है। एक बाइट समूह वह है जो '-' वर्ण द्वारा सीमांकित किया जाता है। अधिक तकनीकी रूप से, हम पहले बाइट्स {10 से 15}, फिर {8-9}, फिर {6-7}, फिर {4-5} और अंत में {0 से 3} देखते हैं।
इस विशिष्ट उदाहरण में, हम '86FF976E763F' की तुलना '393AE6BBB849' से करेंगे। तुरंत ही हम देखते हैं कि @g2 वास्तव में @g1 से बड़ा है।
ध्यान दें कि .NET भाषाओं में, GUID मानों का डिफ़ॉल्ट सॉर्ट क्रम SQL सर्वर की तुलना में भिन्न होता है। यदि आपको SQL सर्वर तुलना सेमेन्टिक्स का उपयोग करके ग्रिड की सरणी या सूची को ऑर्डर करने की आवश्यकता मिलती है, तो आप इसके बजाय एसक्लग्यूड की ऐरे या सूची का उपयोग कर सकते हैं, जो आईसीओएमपरेबल को दूर से लागू करता है जो SQL सर्वर सेमेन्टिक्स के अनुरूप है।
इसके अलावा, सॉर्ट बाइट समूहों की अंतहीनता का अनुसरण करता है (यहां देखें:विश्व स्तर पर अद्वितीय पहचानकर्ता)। समूह 10-15 और 8-9 को बड़े एंडियन (विकिपीडिया लेख में डेटा 4 के अनुरूप) के रूप में संग्रहीत किया जाता है, इसलिए उनकी तुलना बड़े एंडियन के रूप में की जाती है। छोटे एंडियन का उपयोग करके अन्य समूहों की तुलना की जाती है।