Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

ZF2 - Regex MySQL untuk Pencarian kata utuh

Salah satu metodenya adalah dengan menggunakan panggilan REGEXP MySQL dalam Ekspresi Predikat.

Dimana $select adalah turunan dari Zend\Db\Sql\Select dan $searchFor adalah istilah pencarian Anda:

Pencarian substring asli mungkin menggunakan tempat seperti ini...

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

...dan versi keseluruhan kata di atas adalah:

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

Perhatikan ini adalah pencarian multi-bidang, jadi saya telah melakukan PredicateSet::COMBINED_BY_OR . Butuh waktu terlalu lama untuk berhenti bermain-main dengan \b di regex saya. Semoga ini menghemat waktu seseorang di luar sana.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apakah Visual Studio Server Explorer mendukung penyedia database kustom?

  2. JPA - Tidak ada penyedia Persistensi untuk EntityManager bernama {{NAME_HERE}}

  3. Android studio getSlotFromBufferLocked:kesalahan buffer tidak diketahui

  4. Kesalahan MySQL 1064 sintaks tetapi semuanya tampak baik-baik saja

  5. Hapus elemen pertama dalam database SQL Query