दिलचस्प पोस्ट
स्विफ्ट में संपत्तियों को कैसे संग्रहीत किया जाए, वैसे ही मैं उद्देश्य-सी पर था? $ {} प्लेसहोल्डर्स को एक पाठ फ़ाइल में कैसे बदलें? एक्सकोड / आईफ़ोन में असम्बद्ध अपवाद के बारे में स्टैक ट्रेस या अधिक जानकारी UICollectionView प्रवाह सही ढंग से कोशिकाओं को लपेटने से नहीं लेआउट (आईओएस) "स्टैक अतिप्रवाह" कैसे होता है और आप इसे कैसे रोकते हैं? सफ़ारी और क्रोम में jQuery का काम नहीं कर रहा फोकस पर टेक्स्ट का चयन करना यह समानांतर क्यों है। कार्यक्रम के लिए कार्यक्रम को फ्रीज कर दिया गया? अलर्ट डीआलाओग में सूची दृश्य टेम्पलेट केवल हेडर फाइल में क्यों लागू हो सकते हैं? स्ट्रिंग से जावास्क्रिप्ट नई regexp एक निर्धारित कार्य के रूप में एक जावा प्रोग्राम चलाना presentViewController: IOS पर क्रैश <6 (ऑटोलेआउट) वाई-फाई प्रत्यक्ष परिदृश्य में प्रत्येक उपकरण का आईपी पता कैसे प्राप्त करें? कोई MySQL में DATETIME फ़ील्ड के दिनांक हिस्से पर एक इंडेक्स कैसे बना सकता है कैसे PHP में उत्पन्न कई arrays में आइटम के सभी संयोजन

MySQL में "संपूर्ण शब्द मिलान" खोजें

मैं किसी एसक्यूएल क्वेरी को लिखना चाहूंगा जो एक टेक्स्ट फ़ील्ड में कीवर्ड के लिए खोज करता है, लेकिन केवल अगर यह "संपूर्ण शब्द मिलान" है (जैसे जब मैं "छुटाने" की खोज करता हूं, यह "शुष्क" से मेल नहीं होना चाहिए, लेकिन यह चाहिए मैच "एक छुटकारा"

मैं MySQL का उपयोग कर रहा हूँ

सौभाग्य से, इस एप्लिकेशन में प्रदर्शन महत्वपूर्ण नहीं है, और डेटाबेस का आकार और स्ट्रिंग आकार दोनों आराम से छोटा है, लेकिन मैं इसे PHP में ड्राइविंग की तुलना में एसक्यूएल में करना पसंद करता हूं।

Solutions Collecting From Web of "MySQL में "संपूर्ण शब्द मिलान" खोजें"

आप REGEXP और [[:<:]] और [[:>:]] शब्द-सीमा चिह्नकों का उपयोग कर सकते हैं:

 SELECT * FROM table WHERE keywords REGEXP '[[:<:]]rid[[:>:]]' 

क्लासिक शब्द सीमा को रोकने के लिए एक उत्तर मिला [[::<::]] विशेष वर्णों के साथ संघर्ष करना जैसे कि @ # $% ^ & *

बदलने के..

 SELECT * FROM table WHERE keywords REGEXP '[[:<:]]rid[[:>:]]' 

इसके साथ..

 SELECT * FROM table WHERE keywords REGEXP '([[:blank:][:punct:]]|^)rid([[:blank:][:punct:]]|$)' 

बाद के मैचों (अंतरिक्ष, टैब, आदि) || (कॉमा, ब्रैकेट इत्यादि) || लाइन के शुरू / अंत एक अधिक 'समाप्त' शब्द सीमा मैच

 select blah blah blah where column like 'rid %' or column like '% rid' or column like '% rid %' or column = 'rid' 
 select * from table where Locate('rid ', FieldToSearch) > 0 or Locate(' rid', FieldToSearch) > 0 

इससे छुटकारा मिलेगा, जहां से पहले या एक अंतरिक्ष के बाद से छुटकारा पाता है, आप खाते को लेने के लिए दृष्टिकोण का विस्तार कर सकते हैं।? और इतने पर, सुरुचिपूर्ण लेकिन आसान नहीं है

यह अब तक का सबसे अच्छा जवाब है।

 SELECT * FROM table WHERE keywords REGEXP '^rid[ $]' OR keywords REGEXP ' rid[ $]' 

मैं इसे सरल बना देता:

 SELECT * FROM table WHERE keywords REGEXP '[^ ]rid[ $]' 

लेकिन "रेखा-शुरुआत या स्थान" के बजाय "^ NOT a space" का विशेष अर्थ है [^]

REGEXP कई तरह की शर्तों की तुलना कैसे करता है? (इस ऐप में प्रदर्शन का महत्व नहीं है।)

शब्द सीमाओं के साथ regexp का उपयोग करें, लेकिन यदि आप भी असंवेदनशील खोज की तलाश चाहते हैं, तो कृपया ध्यान दें कि REGEXP एक एकल-बाइट ऑपरेटर है, इसलिए यह utf8_general_ci मिलान के लिए कुछ भी नहीं है, मैच असंवेदनशील नहीं होगा।

दोनों मुखर असंवेदनशील और पूर्ण शब्द मिलान करने के लिए, उसी तरह लिखे गए शब्द को निर्दिष्ट करें जो (नापसंद) PHP फ़ंक्शन sql_regcase () ने किया था।

असल में:

  • utf8_general_ci आपको एक समानता (WHERE फ़ील्ड = मान) केस और लहजे असंवेदनशील खोज करने की अनुमति देता है, लेकिन यह आपको एक पूरे शब्द मिलान (शब्द सीमाएं मार्करों को मान्यता नहीं देता) को निर्दिष्ट करने की अनुमति नहीं देता है

  • जैसे आप केस और उच्चारण असंवेदनशील खोज की अनुमति देते हैं लेकिन आपको मैन्युअल रूप से संभव शब्द सीमाओं के सभी संयोजनों को निर्दिष्ट करना होगा (शब्द सीमाएं मार्कर मान्यता प्राप्त नहीं हैं)

  • शब्द सीमाएं [[: <:]] और [[:::]] रीगएक्सपी में समर्थित हैं, जो एक बाइट फ़ंक्शन हैं, इसलिए उच्चारण असंवैधानिक खोज नहीं करते हैं

समाधान शब्द सीमाओं के साथ REGEXP का उपयोग करना है और sql_regcase करता है उस तरीके में संशोधित शब्द।

http://www.genovaperte.it पर प्रयुक्त