在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中转义吗?
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
。