आप किसी क्वेरी में उपयोग किए गए कॉलेशन को एक विशेष कोलाज होने के लिए बाध्य करके समस्या का समाधान कर सकते हैं, उदा. SQL_Latin1_General_CP1_CI_AS
या DATABASE_DEFAULT
. उदाहरण के लिए:
SELECT MyColumn
FROM FirstTable a
INNER JOIN SecondTable b
ON a.MyID COLLATE SQL_Latin1_General_CP1_CI_AS =
b.YourID COLLATE SQL_Latin1_General_CP1_CI_AS
उपरोक्त क्वेरी में, a.MyID और b.YourID टेक्स्ट-आधारित डेटा प्रकार वाले कॉलम होंगे। COLLATE
का उपयोग करना डेटाबेस पर डिफ़ॉल्ट संयोजन को अनदेखा करने के लिए क्वेरी को बाध्य करेगा और इसके बजाय प्रदान किए गए संयोजन का उपयोग करेगा, इस मामले में SQL_Latin1_General_CP1_CI_AS
।
मूल रूप से यहां जो चल रहा है वह यह है कि प्रत्येक डेटाबेस का अपना संयोजन होता है जो "आपके डेटा के लिए छँटाई नियम, मामला और उच्चारण संवेदनशीलता गुण प्रदान करता है" (http://technet.microsoft.com/en-us/library/ms143726.aspx से) ) और टेक्स्ट डेटा प्रकार वाले कॉलम पर लागू होता है , जैसे VARCHAR
, CHAR
, NVARCHAR
, आदि। जब दो डेटाबेस में अलग-अलग कॉलेशन होते हैं, तो आप दो अलग-अलग कॉलेशन के बीच के विरोध को संबोधित किए बिना टेक्स्ट कॉलम की तुलना बराबर (=) जैसे ऑपरेटर से नहीं कर सकते।