¿如何创建一个显示数据的选择查询,如果它们至少匹配一个单词?

时间:2015-11-25 17:35:01

标签: sql

示例:

我的数据库中有一个专栏保留了一个书类型......大多数都有类似“动作,冒险,恐怖”的类型。

我有3本书,一本是冒险,浪漫。

另一个是行动,恐怖。

最后一个是动作,科幻小说。

假设,我想搜索所有包含“动作”一词的书籍......查询必须返回最后两本书,因为他们的性别有“行动”一词。

我怎么能在SQL中执行此操作?

2 个答案:

答案 0 :(得分:2)

要回答您的问题,请使用LIKE运算符。 WHERE MyTable.Genre LIKE '%action%'(唯一的问题是,如果某个流派关键字包含另一个关键字。例如,如果您有流派,&#34;小说&#34;和#34;科幻小说&#34;。)< / p>

现在为更好的方式。规范化数据库。创建一个包含GenresGenre_ID列的Genre_Description表。然后,您的Books表将包含Genre_ID列,其中包含防止错误数据的外键约束。然后,您可以构建一个连接两个表的查询,并为您提供您想要的内容。这遵循关系数据库的最佳实践。它比比较字符串更快地处理。它占用的空间更少。这是最好的解决方案。祝你好运!

答案 1 :(得分:1)

正如DeadZone所说,要避免选择fictionscience fiction,只需附加,

在Sql Server中,您可以执行类似这样的操作

SELECT *
FROM books
WHERE ',' + genre + ',' like '%,action,%'

问题是使用此LIKE不允许您使用INDEX,因此在较大的数据表中可能会出现问题。