最近我将我的数据库标签从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
答案 0 :(得分:0)
test
说“" test" 应存在。
+test
说"测试"必须存在。
test*
查找以" test"开头的任何内容
+test*
表示以" test"开头的内容必须存在。
这些是你的选择;你想要哪个?
(MyISAM对语法有些松懈; InnoDB更严格。)