使用MySQL LIKE匹配整个字符串

时间:2011-09-26 13:29:15

标签: php mysql string sql-like

我一直在搜索StackOverflow和Interweb,我没有太多运气。

我有一个看起来像这样的网址......

nr/online-marketing/week-in-review-mobile-google-and-facebook-grab-headlines

我从网址获取文章名称,并将' - '替换为''给我:

week in review mobile google and facebook grab headlines

此时这是我在文章中提供的所有信息,所以我需要使用它来查询数据库以获取其余的文章信息,问题出现但是这个字符串与实际标题不符文章,这个实例的标题是:

Week in review: Mobile, Google+ and Facebook grab headlines

你可以看到它包含额外的标点符号,所以我需要找到一种方法来使用MYSQL LIKE来匹配文章。

希望有人可以提供帮助,标准SELECT * FROM table WHERE field LIKE $name不起作用,我希望找到一种方法来做到这一点而不会分割每个单词,但如果那就是它归结为那么就是它!

感谢。

2 个答案:

答案 0 :(得分:0)

这看起来更像是数据库设计问题......如果您使用具有不同字段的大型文本作为主键的形式,则可能导致重复或同步问题。

一个可能的解决方案是为每个条目提供唯一标识符(如果MSQL支持,则可能是int或uniqueidentifier字段),并使用该字段将实际healdine映射到URL。

另一个可能的解决方案是创建一个表格,将每个标题与其URL相关联,并使用该表格进行查找。这会产生一些额外的开销,但会确保标题中的特殊字符永远不会影响查找过程。

至于使用当前设计执行此操作的方法,您可以通过单独标记每个单词然后搜索包含所有标记的条目来执行某种正则表达式搜索,但我相当确定MSQL不在基本命令中提供此功能。

答案 1 :(得分:0)

尝试MySQL MyISAM引擎的全文搜索。在您的情况下,查询将是:

SELECT * FROM table
WHERE MATCH (title) AGAINST ('week in review mobile google and facebook grab headlines');

这要求您将表格转换为MyISAM。同样取决于表的大小,测试查询的性能。

查看更多信息: http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html