【问题标题】:Mysql InnoDB match leading wildcard errorMysql InnoDB 匹配前导通配符错误
【发布时间】:2017-09-26 09:54:33
【问题描述】:

最近我将我的数据库表从 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

【问题讨论】:

    标签: mysql innodb wildcard match-against


    【解决方案1】:

    test 表示单词“test”应该存在。
    +test 表示“test”必须存在。
    test* 查找以“test”开头的任何内容"。
    +test* 表示必须存在以 "test" 开头的东西。

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

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

    【讨论】:

      猜你喜欢
      • 2012-10-03
      • 2013-06-13
      • 1970-01-01
      • 2017-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多