我有以下mysql查询:
SELECT title, description
FROM some_table
WHERE MATCH (title,description) AGAINST ('+denver (REGEXP "[[:<:]]colorado[s]*[[:>:]]")' IN BOOLEAN MODE);
这里的“regexp”查找“complete word”colorado(带或不带结尾“s”)。
我只想选择那些有“denver”和“colorados”的行。但是我不能给regexp加上“+”。我试过了,但是得到了0个结果,尽管表中有符合要求的行。
关于如何使用regexp使“+”在其中工作,有什么想法吗?
我在一个php脚本中构造这个,其中“denver”和“colorado”是我用来构造select语句的变量值。
我的php/mysql脚本看起来有点像这样:
SELECT title, description
FROM some_table
WHERE MATCH (title,description) AGAINST ('+$var1 (REGEXP "[[:<:]]$var2[s]*[[:>:]]")' IN BOOLEAN MODE);
最佳答案
我认为不可能把正则表达式和匹配…在布尔模式下。您需要使用语法来编写布尔表达式。
Boolean Full-Text Searches
试试这样的:
SELECT title, description
FROM some_table
WHERE MATCH (title,description)
AGAINST ('+denver +(colorado colorados)' IN BOOLEAN MODE);