2016-12-12 4 views
0

私のデータベースのいくつかの文字列に一致するように正規表現を作成しようとしています。少なくとも2つの部分文字列と正規表現で一致するMySql検索文字列

私の最初のソリューションは、このようなものだった:

SELECT * FROM myTable WHERE myColumn REGEXP 'a1|a2|a3' 

が、このソリューションでそれは干し草の山の少なくとも一つの針を含むすべての文字列にマッチします。私が達成しようとしているのは、すべての針を合わせるか、少なくとも2つを合わせることです。

例:

募集文字列: 'バーで私の小さなfoo' で

  1. [ 'ちょっと'、 'FOO'] =>は
  2. にマッチ[ 'ちょっと'、 'foobarに'] => [ '私'、 'バー' 'ちょっと']
  3. に一致する=>は
+0

代わりに、「フルテキスト検索」を調べてください。 –

答えて

1

これは醜いと遅いですが、ここの方法だと一致していない:

を(例えば、 LIKEの結果として)ブール式が真のため 1または偽のため 0あること
WHERE (myColumn LIKE '%a1%') 
     + (myColumn LIKE '%a2%') 
     + (myColumn LIKE '%a3%') >= 2; 

注意。

LIKEは、REGEXPより速く、LIKEは私の提案では十分ですから、私はそれに切り替えました。

の語句と一致する必要がある場合は、おそらくFULLTEXTが良い方法です。しかし、私の>= 2のトリックはできないかもしれません。

関連する問題