MYSQL - 语法错误,意外的“@”,期望$end

Jua*_*ali 5 mysql sql full-text-search

我正在尝试使用以下 SQL 语法编写全文搜索:

SELECT   u.usuario AS `id`,
         Concat('(', u.usuario, ') ', u.nombre) AS `text`
FROM     usuarios AS u
WHERE    u.cuenta_id = 10
AND      MATCH (u.terminos) against ('jacuna@sgc.gov.co' IN boolean mode)
ORDER BY u.usuario ASC
LIMIT    50
Run Code Online (Sandbox Code Playgroud)
  • u.usuario存储用户ID的字符串值
  • u.nombre存储用户的全名
  • u.terminos存储一些与 AGAINST 一起使用的串联值

例子:

如果用户的 id 为“123456”,全名为“john doe”,则 MySQL 列“terminos”将包含id + 全名,这意味着“123456 john doe”

注意有时用户 ID 可以是电子邮件,因此,它会有“@”字符。当AGAINST值包含“@”时,我收到此错误:

语法错误,意外的“@”,期望 $end

非常感谢。

Bil*_*win 4

将短语放在单引号字符串内的双引号中。

我在 MySQL 5.6 上测试过:

mysql> SELECT u.usuario, terminos
  FROM usuarios AS u
  WHERE u.cuenta_id = 10 AND
       MATCH (u.terminos) AGAINST ('"jacuna@sgc.gov.co"' IN BOOLEAN MODE);
+---------+------------------------+
| usuario | terminos               |
+---------+------------------------+
|       1 | call jacuna@sgc.gov.co |
+---------+------------------------+
Run Code Online (Sandbox Code Playgroud)

阅读https://dev.mysql.com/doc/refman/8.0/en/fulltext-boolean.html

用双引号 (") 字符括起来的短语仅与键入时字面包含该短语的行匹配。全文引擎将该短语拆分为单词,并在 FULLTEXT 索引中执行搜索以查找这些单词。 非单词字符不需要精确匹配:短语搜索只需要匹配与短语完全相同且顺序相同的单词,例如“testphrase”匹配“test,phrase”。