0

Webフォームフィールドに基づいて無制限のオプションを持つことができる以下のクエリを要約しようとしています。ユーザーは、コンマで区切ってタイトルキーワードをいくつでも入力できます。したがって、私のクエリは、無制限の引数を使用して次のように構築されます。

"SELECT title FROM titles WHERE 
 title LIKE '%blue%' 
 AND
 title like '%red%'
 AND
 title like '%green%'
 AND
 title like '%yellow%'
 ...";

このリンクを見て、MySQL LIKE IN()?、正規表現を使用した良い例を示していますが、「OR」を使用しています。

SELECT * from fiberbox where field REGEXP '1740|1938|1940';

「AND」を使用するのと同じことは何ですか?たとえば、準SQLでは次のようになります。

SELECT * from titles WHERE title REGEXP 'blue && red && green && yellow';
4

1 に答える 1

2

AND は、正規表現で行うのが少し難しく、MySQL の限られた正規表現構文ではできないようです。myISAM エンジンまたは MySQL 5.6 を使用している場合は、MATCH()関数を使用して必要なもののほとんどを取得できます。

SELECT title FROM titles WHERE MATCH (title)
AGAINST ('+red* +green* +yellow*' IN BOOLEAN MODE);

ただし、単純な AND チェーンに固執することをお勧めします。壊れにくく、より強力で、コーディングが簡単です。

于 2012-11-29T19:27:11.207 に答える