无论如何都要在innodb全文搜索中逃避@
。我有table
个email
列。
我需要的是返回包含@
符号的所有值。
SELECT id
FROM table
WHERE ( MATCH (table.email) AGAINST ('+@+' IN BOOLEAN MODE) )
AND id IS NOT NULL
GROUP BY id
但这会产生语法错误,因为MySQL医生说@不能在查询http://dev.mysql.com/doc/refman/5.6/en/fulltext-boolean.html
中使用我可以从php中逃脱它们或其他任何方式吗?
答案 0 :(得分:1)
MATCH(email) AGAINST ('+test +email +com' IN BOOLEAN MODE)
AND email LIKE 'test@email.com`
这将首先进行FULLTEXT
搜索,并快速完成。对于匹配的每一行,它将进行额外检查。
警告:innodb_ft_min_token_size
可能为3,因此ab@xyz.com
之类的内容应避免包含+ab
。在极端情况下,请避免使用MATCH
ab@cd.tv
,因为所有标记都太短。
也就是说,您需要一些客户端代码来构造MATCH...AGAINST
。