2010-02-18 20 views
54

प्राप्त करना मुझे पता है, मुझे पता है कि मैंने इस प्रश्न में जो लिखा है उससे मुझे आश्चर्य नहीं होना चाहिए। लेकिन मेरी स्थिति धीरे-धीरे विरासत में पीओएस सिस्टम पर काम कर रही है और मेरे पूर्ववर्ती को जॉइन के बारे में पता नहीं था, इसलिए जब मैंने 60 सेकंड के लिए लोड होने वाले आंतरिक पृष्ठों में से एक को देखा तो मुझे लगता है कि यह काफी तेज़ है, इन 8 प्रश्नों को एक के रूप में दोबारा लिखें जॉइन की स्थिति के साथ पूछताछ। समस्या यह है कि जॉइन के बारे में जानने के अलावा, वह कई डेटाबेस और आश्चर्य के लिए एक बुत भी प्रतीत होता है, आश्चर्य है कि वे विभिन्न collations का उपयोग करते हैं। इस तथ्य का तथ्य यह है कि हम सभी "सामान्य" लैटिन वर्णों का उपयोग करते हैं, जो अंग्रेजी बोलने वाले लोग पूरे वर्णमाला पर विचार करेंगे और यह पूरी बात कुछ महीनों में उपयोग से बाहर हो जाएगी, इसलिए मुझे एक बैंडएड की ज़रूरत है।SQL सर्वर पर विभिन्न कॉलेशन के साथ दो डेटाबेस में शामिल होना और त्रुटि

लंबी कहानी कम मैं विधि के कुछ प्रकार की जरूरत है एक भी मिलान करने के लिए कास्ट करने के लिए तो मैं दो डेटाबेस से दो क्षेत्रों की तुलना कर सकते है।

सटीक त्रुटि है:

"SQL_Latin1_General_CP850_CI_AI" और "SQL_Latin1_General_CP1_CI_AS" में ऑपरेशन के बराबर के बीच मिलान संघर्ष को हल नहीं कर सकते।

उत्तर

107

आप एक प्रश्न में कोलेट खंड का उपयोग कर सकते (मैं अपने उदाहरण अभी नहीं मिल रहा है, इसलिए मेरे वाक्य रचना शायद गलत है - मुझे आशा है कि यह सही दिशा में बताते हैं)

select sone_field collate SQL_Latin1_General_CP850_CI_AI 
    from table_1 
    inner join table_2 
     on (table_1.field collate SQL_Latin1_General_CP850_CI_AI = table_2.field) 
    where whatever 
48

एक सामान्य उद्देश्य तरीका है Collatation को DATABASE_DEFAULT पर मजबूर करना। यह संयोजन नाम को हार्डकोडिंग को हटा देता है जो बदल सकता है।

यह भी अस्थायी तालिका और तालिका चर के लिए उपयोगी है, और जहाँ आप सर्वर मिलान पता नहीं हो सकता (उदाहरण के लिए आप एक विक्रेता ग्राहक के सर्वर पर आपके सिस्टम रखने कर रहे हैं)

select 
    sone_field collate DATABASE_DEFAULT 
from 
    table_1 
    inner join 
    table_2 on table_1.field collate DATABASE_DEFAULT = table_2.field 
where whatever 
संबंधित मुद्दे