我正在建立一个网站,接受用户输入关键字和输出匹配的数据。例如,如果用户指定关键字为'Restaurant pizza
',那么我的数据库应该输出这样的记录。如何将关键字与SQL查询匹配?
我现在的表有一个称为category
列,五列从keyword1
命名keyword5
其中包含他们的专业领域,即“比萨”,“鸡”或“烧烤”等
但我不知道怎么样编写SQL查询,因为用户可以按照任何顺序输入关键字:首先是类别,或者先是专用区域。
所以这样的查询一定会返回任何结果(假设用户输入“餐厅的比萨”查询):
SELECT *
FROM message
WHERE category LIKE 'Restaurant pizza'
OR keyword1 LIKE 'Restaurant pizza'
OR keyword2 LIKE 'Restaurant pizza'
我想这将是一个坏主意分裂输入关键字成词,然后运行中的每一个字数据库的WHERE子句。但我真的不知道如何实现我的目标。
另外,请你给我一些关于如何在这种情况下建立索引的建议?
你好,你需要在'LIKE'语句中使用'%'例子:SELECT * FROM message WHERE category LIKE'%Restaurant pizza%'OR keyword1 LIKE'%Restaurant pizza%'OR keyword2 LIKE'%Restaurant pizza %' – PKirby 2015-03-19 06:30:50
如果用户可以按任意顺序输入。然后,您将不得不拆分并在查询中运行输入的每个单词。如果你不想这样做,你将不得不通知用户在进入之前按特定的顺序进行。它们中的任何一个。不能做他们两个。 – 2015-03-19 06:32:44
@PKirby,我想你误解了。在OP中给出的“餐厅比萨饼”的例子中,餐厅将是类别,比萨饼将是关键字。 '%Restaurant pizza%'将会寻找那些在同一列中的人。此外,OP还表示可以让用户以任何顺序输入,例如“Pizza Restaurant”。 – 2015-03-19 06:36:46