Mysql InnoDB匹配领先的通配符错误

时间:2017-04-28 10:03:49

标签: mysql innodb wildcard match-against

最近我将我的数据库标签从MyISAM更改为InnoDB。现在我有一些使用MATCH和AGAINST的查询。

以下查询是从MyISAM更改为InnoDB后导致错误的示例查询

    SELECT * FROM test WHERE MATCH (test_desc) AGAINST ("*+test" IN BOOLEAN MODE);
    // error: Error Code: 1064. syntax error, unexpected '+', expecting FTS_TERM or FTS_NUMB or '*

当我删除*或将其放在" +"之后签署它的工作,我得到与以前相同的行,但这是正确的吗?

    SELECT * FROM tests WHERE MATCH (test_desc) AGAINST ("+*test" IN BOOLEAN MODE); // works, * after +, BUT IS THIS CORRECT

1 个答案:

答案 0 :(得分:0)

test说“" test" 存在。
+test说"测试"必须存在。
test*查找以" test"开头的任何内容 +test*表示以" test"开头的内容必须存在。

这些是你的选择;你想要哪个?

(MyISAM对语法有些松懈; InnoDB更严格。)