' - '和'&'的问题mysql中的字符串

时间:2010-01-15 17:04:11

标签: php sql mysql

我有一个PHP搜索引擎。通常情况下搜索是可以的。搜索文本是“公司”,在数据库中有“公司”字段......

问题是当搜索文本为&company-company且数据为&company-company时,则不匹配。为什么呢?

-&字符串...

的问题

2 个答案:

答案 0 :(得分:2)

尝试将搜索字词放在引号中。这应该有助于mysql知道你在全文搜索中的字面意思:

SELECT * FROM tablename MATCH (company) AGAINST ('"&company"' IN BOOLEAN MODE)

SELECT * FROM tablename MATCH (company) AGAINST ('"-company"' IN BOOLEAN MODE)

答案 1 :(得分:1)

如果您使用的是全文搜索,那么&和 - 是保留字符。我找不到任何解决这个问题的好办法。我所做的只是删除特殊字符并运行全文搜索。例如,如果他们正在寻找At& t,我会搜索“AT”“T”,但如果你有噪音,At和A就在那里,你就不会得到任何结果。

另一个解决方案是检测他们何时请求特殊字符并运行LIKE'%& Company%'搜索而不是全文搜索,但这会影响查询的性能。