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 回答