sql >> データベース >  >> RDS >> Mysql

ZF2-単語全体の検索のためのMySQL正規表現

    1つの方法は、述語式でMySQLREGEXP呼び出しを使用することです。

    $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. javascript呼び出しでmysqlデータベースからSELECT

    2. SQLServerで重複行をチェックする4つの方法

    3. 記事のインデックスで記事のコメント、ヒット、いいねを数える正しい方法は何ですか?

    4. EntityFramework4.1でmvc-mini-profilerをどのように使用しますか