如何匹配sql搜索句子

时间:2014-09-09 15:06:16

标签: sql

我需要在我的数据库中寻找一个句子。

我用" LIKE" :

SELECT * FROM `TABLE` WHERE `TEXT` LIKE '%toto tata titi%';

但是,我需要使用" MATCH" :

SELECT * FROM `TABLE` WHERE match(`TEXT`) AGAINST ('+toto +tata +titi' IN BOOLEAN MODE)

SELECT * FROM `TABLE` WHERE match(`TEXT`) AGAINST ('+toto tata titi' IN BOOLEAN MODE)

但查询" MATCH"没有使用" LIKE"返回相同数量的记录。

那么如何搜索匹配的句子?

1 个答案:

答案 0 :(得分:0)

这两个陈述非常不同:

WHERE `TEXT` LIKE '%toto tata titi%'
WHERE match(`TEXT`) AGAINST ('+toto +tata +titi' IN BOOLEAN MODE)

第一个查找包含14个字符'toto tata titi'的字符串,看起来就像那样。它与'tata titi toto'不匹配。

第二个按字词进行搜索,因此它也会匹配'tata titi toto''toto and xxx tata yyy titi'

等效的like逻辑更像是:

WHERE `TEXT` LIKE '%toto%' and
      `TEXT` LIKE '%tata%' and
      `TEXT` LIKE '%titi%'

这不完全相同,因为这将匹配'tototatatiti'版本不会匹配的match。但它可能足够接近你想要的东西。