Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

ZF2 - MySQL Regex để tìm kiếm toàn bộ từ

Một phương pháp sẽ là sử dụng lệnh gọi MySQL REGEXP trong Biểu thức vị từ.

Nơi $select là một bản sao của Zend\Db\Sql\Select$searchFor là cụm từ tìm kiếm của bạn:

Tìm kiếm chuỗi con ban đầu có thể sử dụng nơi như thế này ...

$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
    ),
));

... và phiên bản toàn từ của phần trên là:

$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
    ),
));

Lưu ý rằng đây là những tìm kiếm đa trường, vì vậy tôi đã thực hiện PredicateSet::COMBINED_BY_OR . Tôi đã mất quá nhiều thời gian để ngừng đánh lừa với \b trong regex của tôi. Hy vọng điều này sẽ cứu ai đó ngoài kia một chút thời gian.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Truy xuất tổng mức tăng kỷ lục đang chạy theo thời gian trong mysql

  2. Phiên Php và đăng sự cố trong trang đăng nhập

  3. Tại sao null <> null =null trong mysql

  4. Hệ thống sao lưu nóng được đề xuất cho MySQL?

  5. Số lượng riêng biệt của MySQL nếu điều kiện duy nhất