SQL सर्वर में विशेष वर्ण के साथ पंक्तियों के लिए खोजें
आज एक प्रोग्रामिंग समस्या का निवारण करते समय मैंने देखा कि आप एक विशेष वाक्यविन्यास का उपयोग किए बिना% या _ जैसे विशेष वर्ण वाले स्ट्रिंग स्तंभों के लिए एक LIKE खोज का उपयोग नहीं कर सकते। समस्या का पता लगाने में केवल कुछ मिनट लगे, लेकिन सिंटेक्स को याद रखना हमेशा आसान होता है यदि आप इसके बारे में लिखते हैं.
तो हाँ, यह पोस्ट पूरी तरह से मेरे लाभ के लिए है। उम्मीद है कि यह किसी और को भी मदद करेगा.
मान लें कि आप कोई भी फ़ील्ड ढूंढना चाहते हैं जिसमें टेक्स्ट "100%" हो, तो आप इस क्वेरी को एक साथ रखें:
चुनें * टैबलेनेम से जहां फ़ील्डनाम '% 100 %%' को पसंद करता है
इसके बजाय कि आप क्या चाहते थे, आपको "100" के साथ-साथ "100%" वाली सभी पंक्तियाँ मिलेंगी.
यहां समस्या यह है कि SQL सर्वर प्रतिशत चिह्न, अंडरस्कोर और वर्ग कोष्ठक को विशेष वर्णों के रूप में उपयोग करता है। आप बस उन्हें भागने के बिना एक LIKE क्वेरी में एक सादे चरित्र के रूप में उपयोग नहीं कर सकते.
स्क्वायर ब्रैकेट एस्केप
SQL सर्वर को बताने के लिए आप वर्ग कोष्ठक के साथ% या _ को घेर सकते हैं कि अंदर का वर्ण एक नियमित वर्ण है.
चुनें * टैबलेनेम से जहां फ़ील्डनाम '% 100 [%]%' पसंद करता है
T-SQL ESCAPE सिंटैक्स
वैकल्पिक रूप से, आप अपनी क्वेरी पर ESCAPE ऑपरेटर को जोड़ सकते हैं, और जिस मूल्य से आप बचना चाहते हैं, उससे पहले एक \ वर्ण जोड़ें.
चुनें * टैबलेनेम से जहां फ़ील्डनाम '% 100%%' ESCAPE '\' को पसंद करता है
ESCAPE '\' क्वेरी का हिस्सा SQL इंजन को वर्ण की व्याख्या करने के लिए एक वाइल्डकार्ड के बजाय एक शाब्दिक वर्ण के रूप में बताता है।.
व्यक्तिगत रूप से मुझे दूसरी विधि आसान लगती है, और आप इसे एक वर्ग ब्रैकेट से बचने के लिए भी उपयोग कर सकते हैं.