在我根据文章标题查找结果的查询中,我使用了LIKE部分,如下所示:
WHERE title LIKE %searchquery%
在我的数据库中,一个标题是这样的:
Economy in America
我的问题:
使用我当前的查询,当用户输入以下搜索查询时,此标题会列出 NOT :
america economy
当用户只输入其中一个术语时,一切正常,标题就会列出。
为什么?
如何调整查询以便在用户输入多个术语时我的SQL查询也能正常工作?
答案 0 :(得分:1)
MySQL LIKE
运算符的限制在于它不提供您正在寻找的那种排序的完整正则表达式支持。话虽如此,您可以尝试的一个选项是拆分搜索查询字词,然后使用LIKE
加入多个AND
条件。考虑这个例子:
WHERE title LIKE %queryterm1% AND LIKE %queryterm2%
如果queryterm1
为'america'
而queryterm2
为'economy'
,那么这将与标题'Economy in America'
匹配。
答案 1 :(得分:0)
您需要按空格分割查询,然后添加多个LIKE语句,如下所示:
WHERE title LIKE '%america%' AND title LIKE '%economy%'
答案 2 :(得分:0)
正如@Tim所说,你必须在你的应用程序中编写一些例程来划分字符串术语并将它们注入select where
子句中。或者您可能需要为此编写一些存储过程。