MySQL查询 - 如何在字段中查找某些字符串

时间:2017-01-30 18:55:17

标签: mysql sql

我有一个表“故事”如下:

+++++++++++++++++++++++++++++++++++++++++++
|   id   |    keywords                    |
+++++++++++++++++++++++++++++++++++++++++++
|    1   | romance,movie,drama            |
|    2   | newmovie,horor,comedy          |
|    3   | movie,scifi                    |
|    4   | newmovie,romance,drama,asia    |
|    5   | kids,movie                           |
+++++++++++++++++++++++++++++++++++++++++++

我尝试查询以在关键字字段中搜索“电影”,如下所示:

SELECT id FROM story WHERE keywords LIKE '%movie%'

,结果是

  

1,2,3,4,5

但在这种情况下,我希望结果为1,3,5(字段值newmovie不包括在内)。有人可以帮我查询怎么做?

感谢您的帮助..

2 个答案:

答案 0 :(得分:3)

你想这样使用find_in_set

java -jar bfg.jar --delete-files *.pyc

虽然您应该考虑规范化表格结构。

在这种情况下,您可以在一行中存储一个关键字,然后查询就像:

SELECT id FROM story WHERE find_in_set('movie', keywords) > 0;

这将是它的结束。不需要繁重的字符串功能。

你可以有这样的结构:

select id from story where keyword = 'movie';

然后,你可以简单地加入这两个:

keywords(id, name);

story(story_id,. . ., keyword_id);

答案 1 :(得分:-1)

你的问题是" newmovie"可以通过"%movie%"找到你只需要搜索"电影"。