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. Предупреждение:mysqli_connect():(HY000/1045):Достъпът е отказан за потребител 'username'@'localhost' (използвайки парола:ДА)

  2. Как да се свържа с MySQL на Amazon EC2 от Windows?

  3. Импортиране на GeoLite2 на MaxMind в MySQL

  4. Отпечатване на резултатите от заявка SELECT като предварително форматиран текст в PHP?

  5. Как да намерите уникални двойки от две колони в SQL?