2011-06-07 24 views
1

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

这里谈到一个例子:比方说,我想要得到的“”每一个组合,“”,“”,“”。所以,我想在我的结果的句子:“你喜欢喝茶”,“你喜欢”,或“如茶”或“做茶”,但不是句子“做你喜欢咖啡','你喜欢茶'

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

非常感谢您的帮助。

+1

如果判决*你讨厌的茶,会发生什么样和咖啡*? – 2011-06-07 08:58:02

+0

如果你正在讨论输入内容,除了'你是否喜欢喝茶'之外,所有建议的结果都应该返回,因为幻想不在输入中。如果您的句子是dabatabe中的一行,则不应该返回,因为咖啡不在输入中。 – JuCachalot 2011-06-07 09:30:43

+0

忽略我以前的(删除的)评论。似乎可以通过[sets](http://en.wikipedia.org/wiki/Set_theory)来解释场景。我在想。 – 2011-06-07 10:10:46

回答

0

,如果你想自动设定搜索“你喜欢”“你喜欢喝茶”但不“你喜欢咖啡”,我认为这是不可能的,因为搜索引擎是只是一串字符。它不知道速滑运动员的肌肉“茶”和“咖啡”除了长度的差异(3比5)和字符集

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

0

当您使用

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

然后你给出的例子工作,但你依赖于给定的顺序,所以一个“像茶一样”的价值将不会被覆盖。

我猜的解决办法是形成像查询:

WHERE (field LIKE '%do%') AND (field LIKE '%like') AND (field LIKE '%tea%') 
相关问题