अपना WHERE संशोधित करें इस तरह की स्थिति:
WHERE mycolumn LIKE '%\_%' ESCAPE '\'
यह उन तरीकों में से एक है जिसमें Oracle भागने वाले पात्रों का समर्थन करता है। यहां आप एस्केप कैरेक्टर को escape . के साथ परिभाषित करते हैं खोजशब्द। विवरण के लिए Oracle डॉक्स पर यह लिंक देखें।
'_' और '%' वाइल्डकार्ड एक LIKE . में होते हैं SQL में ऑपरेटेड स्टेटमेंट।
_ चरित्र (कोई भी) एक एकल चरित्र की उपस्थिति की तलाश करता है। अगर आप columnName LIKE '_abc' . से सर्च करते हैं , यह आपको 'aabc' . वाली पंक्तियों के साथ परिणाम देगा , 'xabc' , '1abc' , '#abc' लेकिन नहीं 'abc' , 'abcc' , 'xabcd' और इसी तरह।
'%' वर्ण का उपयोग 0 या अधिक वर्णों के मिलान के लिए किया जाता है। यानी अगर आप columnName LIKE '%abc' . से सर्च करते हैं , यह आपको 'abc' . होने के साथ परिणाम देगा , 'aabc' , 'xyzabc' और इसी तरह, लेकिन कोई 'xyzabcd' , 'xabcdd' और कोई अन्य स्ट्रिंग जो 'abc' . के साथ समाप्त नहीं होती है ।
आपके मामले में आपने '%_%' . द्वारा खोजा है . यह उस कॉलम के साथ सभी पंक्तियों को एक या अधिक वर्ण देगा, जिसका अर्थ है कि कोई भी वर्ण, इसके मूल्य के रूप में। यही कारण है कि _ . न होने पर भी आपको सभी पंक्तियां मिल रही हैं आपके कॉलम मानों में।