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