2013-07-10 37 views
1

我有一个名为“关键字”的长文本字段的作业表。如何根据部分字符串匹配排除行?

我想形成一个SELECT语句,我可以匹配某些关键字,但排除其他关键字。

例如,我需要SQL“给我所有关键字包含单词”肖像“的作业,但排除那些包含”户外“一词的作业。

谢谢! [如果需要修改,或其他信息需要的问题,只是让我知道。]

回答

6

如何:

. . . WHERE keywords LIKE '%portraits%' AND keywords NOT LIKE '%outdoors%' . . . 

一个更好的办法是确定关键字的一个单独的表的工作。每个作业/关键字组合应该有一行。通过适当的索引,您可以大大加快查找带或不带关键字的作业。

+0

感谢您的建议。一旦我得到我的数据位置,它将有兴趣检查查询与长时间查询与查询另一个表之间的表现。另一个可能会影响性能的变量是与完全匹配进行部分匹配的能力(即LIKE“%port%”vs =“portraits”) – skippix

+0

为什么不给出一个索引示例和另一个表? –

3
SELECT * 
FROM [table_name] 
WHERE keywords like '%portraits%' 
    AND keywords not like '%outdoors%';