我现在想用SQL和PHP做一个搜索引擎。我勉强使用以下查询:
SELECT * FROM info WHERE name LIKE '%$q%' LIMIT 10
但我想选择以'q'开头的'name'信息,而不是那些以$ q开头的信息。
答案 0 :(得分:22)
只需删除第一个通配符(%):
SELECT * FROM info WHERE name LIKE 'X%' LIMIT 10
答案 1 :(得分:0)
如果您想要搜索具有多个名称的字段并且您想要搜索可能位于该字段中间的名称,那么最好使用Full Text Search
(FTS)。例如,如果OP中的name
字段指的是全名,并且可能包含"John Doe"
,并且您想要搜索"Doe"
,那么FTS可能会更好(更准确)并且比使用LIKE
运算符更快。使用FTS,文本中的单个单词被编入索引,因此搜索速度非常快,而且它允许更复杂的搜索,例如在不相邻的字段中查找两个单词(或名称)的能力(选择一个示例)随机的)。
OP中未提及特定数据库供应商,但如果支持FTS,则它可能是您尝试的内容的不错选择。通过搜索可以轻松找到一些FTS information for SQL Server和for MySQL。