2010-10-22 18 views
6

मेरी तालिका में मेरा पहला नाम और अंतिम नाम है। कुछ नाम ऊपरी मामले (अब्राहम) हैं, कुछ नाम कम मामले (अब्राहम) हैं, कुछ नाम ucword (अब्राहम) से शुरू होने वाले चरित्र हैं।MySQL regex क्वेरी केस असंवेदनशील

तो जब मैं REGEXP '^ [abc]' का उपयोग कर कहां कर रहा हूं, तो मुझे उचित रिकॉर्ड नहीं मिल रहे हैं। नामों को कम मामले में कैसे बदलें और चयन QUERY का उपयोग करें।

SELECT * FROM `test_tbl` WHERE cus_name REGEXP '^[abc]'; 

यह मेरा क्वेरी है, ठीक काम करता है अगर रिकॉर्ड लोअर केस हैं, लेकिन मेरे रिकॉर्ड मध्यवर्ती हैं, मेरे सभी ग्राहकों के नाम नहीं लोअर केस कर रहे हैं, सभी के नाम ucword की तरह हैं।

तो इस उपर्युक्त क्वेरी के लिए उचित रिकॉर्ड प्रदर्शित नहीं हो रहा है।

+2

आप हल करने की कोशिश कर रहे हैं? 'REGEXP' लगभग हमेशा एक गलत समाधान है। – zerkms

+0

और यू, वी, डब्ल्यू, सभी अल्फाबेट्स के साथ शुरू होने वाली मेरी उपरोक्त regexp क्वेरी – Bharanikumar

+0

पर काम नहीं कर रही है और मैं भी एक या बी या सी, – Bharanikumar

उत्तर

10

मुझे लगता है कि आपको यह सुनिश्चित करने के लिए अपने डेटाबेस से पूछना चाहिए कि नाम कम हो गए हैं, मान लीजिए कि नाम वह नाम है जिसे आप ढूंढना चाहते हैं, और आपके आवेदन में आपने इसे 'अब्राहम' की तरह कम कर दिया है, अब आपकी क्वेरी होना चाहिए इस तरह:

SELECT * FROM `test_tbl` WHERE LOWER(cus_name) = name 

के बाद से मुझे नहीं पता है कि जिस भाषा का उपयोग, मैं सिर्फ रखा है नाम है, लेकिन यकीन है कि यह कम है और आप अब्राहम, अब्राहम या नाम के किसी भी बदलाव को पुनः प्राप्त करना चाहिए!

हेप इससे मदद करता है!

+0

REGEXP '^ [[<:]]b.*[[:>] से शुरू होने वाले नाम को खोजना चाहता हूं। ] 'यह बी के साथ शुरू होने वाले रिकॉर्ड्स नाम को प्रस्तुत करता है लेकिन यदि मैं जोड़ता हूं या शर्त देता हूं तो यह REGEXP'^[[: <:]] b। * | c। * [[:>:]] 'प्रदर्शित करता है, सभी रिकॉर्ड, जो शुरू हो रहा है एफ, टी, एच, यू की तरह कभी भी, लेकिन मेरी हालत के अनुसार इसे केवल बी और सी चरित्र नामों के साथ शुरू करना चाहिए, – Bharanikumar

0

आपको विशिष्ट स्ट्रिंग या वर्ण से शुरू होने वाले नामों की खोज करने के लिए regexp की आवश्यकता नहीं है।

SELECT * FROM `test_tbl` WHERE cus_name LIKE 'abc%' ; 

% वाइल्डकार्ड चार है। खोज केस संवेदी है जब तक आप स्तंभ cus_name के लिए द्विआधारी विशेषता सेट या आप द्विआधारी ऑपरेटर

SELECT * FROM `test_tbl` WHERE BINARY cus_name LIKE 'abc%' ; 
+2

आपकी क्वेरी स्ट्रिंग 'एबीसी' से शुरू होने वाले नामों के लिए खोज करती है जो ओपी की क्वेरी से बहुत अलग है नाम 'ए' या 'बी' या 'सी' से शुरू होते हैं। – codaddict

+0

मुझे लगता है कि ऊपर गलत है, हमें REGEXP '^ [ABC]' – Bharanikumar

+0

से देखना चाहिए, मुझे लगता है कि उपयोगकर्ता "आपके द्वारा टाइप किए जाने वाले खोज" फ़ील्ड/टूल को बनाने का प्रयास कर रहा था। – aeon

4

आप की कोशिश की है का उपयोग करें:

SELECT * FROM `test_tbl` WHERE LOWER(cus_name) REGEXP '^[abc]'; 
क्या वास्तविक मुद्दा
संबंधित मुद्दे