MySQL查询-如何在字段中查找特定字符串

标签 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 的字段值)。有人可以帮助我如何查询吗?

感谢您的帮助..

最佳答案

您想使用 find_in_set像这样:

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);

然后,您可以像这样简单地将两者连接起来:

select s.* 
from story s
inner join keywords k on s.keyword_id = k.id
where k.name = 'movie';

关于MySQL查询-如何在字段中查找特定字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41943406/

相关文章:

Python 中带字典的 MySQL 动态查询语句

PHP 准备语句 bind_param() 错误

mysql - 来自单父表的两个外键约束不起作用

sql - MySQL 查询问题

mysql - Passport 登录-mysql

c# - SQL Server 排序规则区分大小写

sql - SQL Server 中的 DateDiff/Nb 问题

sql - 引导为PK低性能

sql - 无法执行存储过程以插入链接服务器上的表

php - 获取图像大小() : Filename cannot be empty