我有以下用户可以输入的搜索字词(来自三个示例字词):
"goofy plastic toy"
"goofy toy plastic"
"plastic goofy toy"
"plastic toy goofy"
"toy goofy plastic"
"toy plastic goofy"
如何编写一个正确的SELECT
语句,可以查看所有语句而无需硬编码OR
?
所以只是:
SELECT a
FROM b
WHERE c = '<search statements in all possible ways separated by spaces here>';
用户输入的单词数量可以是无限的。它可能是两个,可能是十个,谁知道。
我正在尝试搜索100,000个产品标题及其描述,并在任意顺序中提取包含所有字词的记录。
答案 0 :(得分:1)
如果您只想以任何顺序返回包含这两个单词的行(即使它们也包含其他单词),那么您可能希望使用FULLTEXT
这样的索引:
SELECT a
FROM b
WHERE MATCH (c) AGAINST ('+goofy +plastic' IN BOOLEAN MODE);
答案 1 :(得分:0)
如果您不关心性能,可以使用regular expressions。如果这样做,您应该考虑重新构建数据库架构。关系数据库用于处理原子数据,而不是数据集。最简单的更新是使列ENUM或SET取决于更适合您的情况。