使用给定的单词列表创建用于匹配varchar字段的SQL查询

时间:2011-06-07 08:44:39

标签: mysql sql

我正在寻找一条建议SQL查询的建议。我有一个MySQL数据库,其中包含一个名为'sentences'的VARCHAR(255)字段。你可以猜到这个字段包含几个单词的句子。我想查询数据库以检索几个给定单词的任意组合,但没有任何其他单词。

以下是一个例子:假设我希望得到“”,“”,“喜欢”的所有组合, '的'。所以我想在结果中得到句子:'你喜欢茶','你喜欢',还是'喜欢茶 '或'做茶'但不是句子'你喜欢咖啡','你喜欢喝茶'

当然,我可以用PHP创建所有可能的单词组合,然后创建正确的SQL查询。但我正在寻找一种方法,只使用SQL运算符和给定的单词,而无需任何其他预处理。

非常感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

如果你想自动设置搜索'你喜欢''你喜欢喝茶吗?但不是'你喜欢咖啡吗?< / strong>,我认为这是不可能的,因为对于搜索引擎来说,它只是一串字符。除了长度(3对5)和字符集之外,它不知道'茶'和'咖啡'的区别

PS 要搜索多个字符串,请尝试使用fulltext

答案 1 :(得分:0)

使用时

WHERE (field LIKE '%do%%like%%tea%')

然后你给出的例子有效,但你依赖于给定的顺序,因此不会涵盖“像茶一样”的值。

我猜解决方案就是形成如下的查询:

WHERE (field LIKE '%do%') AND (field LIKE '%like') AND (field LIKE '%tea%')