कैड रॉक्स के उत्तर में दो अलग-अलग व्यवहार हैं:प्रतिस्थापन सफल होता है (जब SQL संयोजन का उपयोग किया जाता है) और असफल (विंडोज संयोजन का उपयोग किया जाता है)। इसका कारण उपयोग किए गए संयोजन के प्रकार में है।
यह व्यवहार लगभग 4 वर्ष पहले Microsoft को सबमिट किया गया था:
<ब्लॉकक्वॉट>प्रश्न: एनयूएल कैरेक्टर को रिप्लेस () के साथ बदलने की कोशिश करते समय, यह काम करता है कि वैल्यू में एक एसक्यूएल कोलाज है, लेकिन विंडोज कोलेशन नहीं है।
ए: यह इस तथ्य के कारण है कि Windowscollations में 0x0000 एक अपरिभाषित वर्ण है। तुलना, सॉर्ट और पैटर्न मिलान के दौरान सभी अपरिभाषित वर्णों को अनदेखा कर दिया जाता है। तो 'ए' + चार (0) के लिए खोज करना वास्तव में 'ए' की खोज करना है, और चार (0) की खोज करना खाली स्ट्रिंग के बराबर है।
अपरिभाषित चरित्र को संभालने का तरीका थोड़ा भ्रमित करने वाला है, लेकिन विंडोज ने उन्हें सॉर्ट करने के लिए परिभाषित किया है, और SQL सर्वर सामान्य विंडोज एपीआई के अनुरूप है।
एसक्यूएल संयोजन में, अपरिभाषित चरित्र की कोई धारणा नहीं है। प्रत्येक कोडपॉइंट को एक भार सौंपा जाता है, इसलिए हमें वहां कोई समस्या नहीं दिखाई देती है।
लेकिन दुर्भाग्य से, यह अभी भी अनिर्दिष्ट है।
तो, ऐसा लगता है कि केवल एक ही समाधान संयोजन को SQL संयोजन में बदलना है (उदा. SQL_Latin1_General_CP1_CI_AS
भी इस्तेमाल किया जा सकता है)।
मैंने अपना पिछला उत्तर अनावश्यक के रूप में हटा दिया है