示例:
我的数据库中有一个专栏保留了一个书类型......大多数都有类似“动作,冒险,恐怖”的类型。
我有3本书,一本是冒险,浪漫。
另一个是行动,恐怖。
最后一个是动作,科幻小说。
假设,我想搜索所有包含“动作”一词的书籍......查询必须返回最后两本书,因为他们的性别有“行动”一词。
我怎么能在SQL中执行此操作?
答案 0 :(得分:2)
要回答您的问题,请使用LIKE运算符。 WHERE MyTable.Genre LIKE '%action%'
(唯一的问题是,如果某个流派关键字包含另一个关键字。例如,如果您有流派,&#34;小说&#34;和#34;科幻小说&#34;。)< / p>
现在为更好的方式。规范化数据库。创建一个包含Genres
和Genre_ID
列的Genre_Description
表。然后,您的Books
表将包含Genre_ID
列,其中包含防止错误数据的外键约束。然后,您可以构建一个连接两个表的查询,并为您提供您想要的内容。这遵循关系数据库的最佳实践。它比比较字符串更快地处理。它占用的空间更少。这是最好的解决方案。祝你好运!
答案 1 :(得分:1)
正如DeadZone所说,要避免选择fiction
和science fiction
,只需附加,
在Sql Server中,您可以执行类似这样的操作
SELECT *
FROM books
WHERE ',' + genre + ',' like '%,action,%'
问题是使用此LIKE
不允许您使用INDEX
,因此在较大的数据表中可能会出现问题。