MySQL全文索引:为什么match()和against()有效而contains()无效?

MySQL全文索引:为什么match()和against()有效而contains()无效?
最新回答
花Ж葬

2022-11-08 15:22:47

在MySQL中,全文索引的查询功能是通过MATCH()和AGAINST()函数实现的,而CONTAINS()函数在MySQL中哗洞并不存在。以下是详细解释:

  • MATCH()和AGAINST()函数

    MATCH()函数用于指定要搜索的列,这些列必须是在创建全文索引时定义的列。

    AGAINST()函数用于指定搜索的文本,并可以指定搜索模式,如布尔模式(IN BOOLEAN MODE)。

    例如:SELECT * FROM tb WHERE MATCH(name) AGAINST('str*' IN BOOLEAN MODE);

  • CONTAINS()函数

    CONTAINS()函数是Microsoft SQL Server中用于全文搜索的函数,但在MySQL中并不支持。

    在MySQL中使用CONTAINS()函数会导致语法错误,如“er_parse_error,errno:1064”。

  • 常见误解

    某些中文技术博客可能会误导性地声称CONTAINS()函数在MySQL中可用,但实际上这是不正确的。

    为了确保在使用全明陆文索引时不会出现问激芦顷题,应参考MySQL官方文档,使用正确的语法。

  • 总结

    MySQL的全文索引查询应使用MATCH()和AGAINST()函数。

    CONTAINS()函数在MySQL中无效,它是Microsoft SQL Server的函数。

    使用正确的函数和语法可以避免语法错误,并确保全文搜索功能正常工作。