Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

ZF2 - संपूर्ण शब्द खोजों के लिए MySQL Regex

एक तरीका यह होगा कि प्रेडिकेट एक्सप्रेशन में MySQL REGEXP कॉल का उपयोग किया जाए।

जहां $select Zend\Db\Sql\Select . का एक उदाहरण है और $searchFor क्या आपका खोज शब्द है:

मूल सबस्ट्रिंग खोज इस तरह से एक जगह का उपयोग कर सकती है...

$select->where(array(
    new Predicate\PredicateSet(
        array(
            new Zend\Db\Sql\Predicate\Like('tag', '%' . $searchFor . '%'),
            new Zend\Db\Sql\Predicate\Like('title', '%' . $searchFor . '%'),
        ),
        Zend\Db\Sql\Predicate\PredicateSet::COMBINED_BY_OR
    ),
));

...और उपरोक्त का पूर्ण-शब्द संस्करण है:

$select->where(array(
    new Predicate\PredicateSet(
        array(
            new Zend\Db\Sql\Predicate\Expression("tag REGEXP '([[:<:]]" . $searchFor ."[[:>:]])'"),
            new Zend\Db\Sql\Predicate\Expression("title REGEXP '([[:<:]]" . $searchFor ."[[:>:]])'"),
        ),
        Zend\Db\Sql\Predicate\PredicateSet::COMBINED_BY_OR
    ),
));

ध्यान दें कि ये बहु-क्षेत्रीय खोजें हैं, इसलिए मैंने एक PredicateSet::COMBINED_BY_OR किया है . मुझे \b . के साथ बेवकूफ बनाना बंद करने में बहुत समय लगा मेरे रेगेक्स में। आशा है कि यह किसी को वहाँ कुछ समय बचाएगा।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL Select... इंडेक्स के साथ अपडेट के लिए समवर्ती समस्या है

  2. डेटा इनफाइल और लोड डेटा लोकल इनफाइल के बीच अंतर

  3. स्प्रिंग बूट एप्लिकेशन में ssh टनल पर रिमोट mysql से कैसे कनेक्ट करें?

  4. एक्सएमएल फाइलों से MYSQL में बल्क इंसर्शन

  5. MySQL में किसी अन्य कॉलम के आधार पर एक परिकलित कॉलम बनाएं