12

MySql REGEXP を使用します。

SELECT * FROM myTable
WHERE title REGEXP "dog|cat|mouse";

データセットは小さいので、パフォーマンスは気にしません。そして、「LIKE」ステートメントの束を連結する必要がないため、LIKE 表記よりもこれを好みます。

ただし、上記の表記では論理 OR 演算子を使用しています。すべてのキーワードを含む行のみが一致するように、論理 AND 演算子はありますか?

(私は InnoDB を使用しているため、全文検索はオプションではありません)

4

5 に答える 5

13

AND を連結する以外に良い解決策はありません。

SELECT * FROM myTable
WHERE title REGEXP "dog"
AND title REGEXP "cat"
AND title REGEXP "mouse"

それ以外の場合、正規表現は次のようになります。

SELECT * FROM myTable
WHERE title REGEXP "(dog.*cat.*mouse)|(dog.*mouse.*cat)|(mouse.*dog.*cat)|(mouse.*cat.*dog)|(cat.*dog.*mouse)|(cat.*mouse.*dog)"
于 2013-03-28T16:35:21.050 に答える
0

AND操作は、mysql-AND によってのみアクセス可能です。

WHERE title REGEXP 'dog' AND title REGEXP 'cat' AND title REGEXP 'mouse'

これは、すべてのキーワードがタイトル フィールドにあるエントリのみを表示します。お気に入り

title = "this is about mouse, cat and dog"
于 2013-03-28T16:34:19.927 に答える
0

ANDそれらの間にいくつかの条件を追加できます。

SELECT * FROM myTable
WHERE title REGEXP "dog" AND title REGEXP "cat" AND title REGEXP "mouse";

ここでは REGEXP は必要ないかもしれませんが、代わりにINSTRを使用できます (通常は通常は低速です)。

SELECT * FROM myTable
WHERE INSTR(title, "dog") AND INSTR(title, "cat") AND INSTR(title, "mouse");
于 2013-03-28T16:34:51.237 に答える