Transact-SQL क्वेरी में स्ट्रिंग से पहले N उपसर्ग


41

क्या आप मुझे बताएंगे, कृपया, मुझे लेन-देन से पहले N- उपसर्ग का उपयोग कब करना चाहिए? मैंने एक डेटाबेस के साथ काम करना शुरू कर दिया है, जहां मुझे इस तरह से क्वेरी का उपयोग करके कोई परिणाम नहीं मिलता है

SELECT * FROM a_table WHERE a_field LIKE '%а_pattern%'

जब तक मैं पैटर्न नहीं बदलूंगा N'%а_pattern%'। मुझे पहले से इस उपसर्ग को जोड़ना नहीं था, इसलिए मैं उत्सुक हूं। a_fieldके रूप में परिभाषित किया गया है nvarchar(255), लेकिन मुझे लगता है कि कारण कुछ और है।

जवाबों:


31

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

https://support.microsoft.com/en-us/kb/239530


6

यह दर्शाता है कि बाद में स्ट्रिंग यूनिकोड में है (एन वास्तव में राष्ट्रीय भाषा चरित्र सेट के लिए खड़ा है)। जिसका अर्थ है कि आप NARAR, NVARCHAR या NTEXT मान पारित कर रहे हैं, जैसा कि CHAR, VARCHAR या पाठ के विपरीत है। इन डेटा प्रकारों की तुलना के लिए अनुच्छेद # 2354 देखें।

यूनिकोड का उपयोग आमतौर पर डेटाबेस अनुप्रयोगों में किया जाता है जो कोड पृष्ठों की सुविधा के लिए डिज़ाइन किए जाते हैं जो अंग्रेजी और पश्चिमी यूरोप कोड पृष्ठों से परे होते हैं उदाहरण के लिए चीनी। यूनिकोड को डिज़ाइन किया गया है ताकि विस्तारित चरित्र सेट अभी भी डेटाबेस कॉलम में "फिट" हो सकें।


3

मुझे लगता है कि एन-उपसर्ग SQL सर्वर को एक यूनिकोड मान के रूप में बताता है। Nvarchar कॉलम यूनिकोड हैं इसलिए आपको इन कॉलम को एक्सेस करते समय इस सिंटैक्स का उपयोग करना चाहिए।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.