Mysql查询字段中包含某字符串的记录

2025-3-26 / 0 评论 / 1 阅读

成功语句

select * from ff_vod where FIND_IN_SET("黄金兄弟", vod_name)

select * from ff_vod where FIND_IN_SET("黄金兄弟", vod_name) ORDER BY vod_id LIMIT 2

方法一

很简单可以用%来实现比如 1 SELECT *<span> </span>FROM users<span> </span>WHERE emails<span> </span>like "%b@email.com%";
但是这样子的话就会把bb@email.com也查出来了就不符合需求了方法二利用mysql 字符串函数 find_in_set(); 1 SELECT *<span> </span>FROM users<span> </span>WHERE find_in_set('aa@email.com'``, emails);

这样子就可以找到email字段里包含有aa@emial.com的所有用户了

1.正确的方式:
判断字段field_A中是否包含23:

select * from table_test where FIND_IN_SET("23", field_A) ;
1
2.错误的方式:
select * form table_test where field_A like "%23%"
1
3.案例分析:
field_A字段:
[5,123,223]
[230,232,233]
[5,23,1]
1
2
3
4
若想查询field_A字段中含有字符串23的记录,而不包含123,231等记录的话,只能通过Mysql函数FIND_IN_SET("str","field")来查询,否则会有干扰数据。

通过like "%23%"会查询到3条记录。
通过like "23%"会查询到后两条记录。
通过like "%23"第一条和第三条记录,所以like模糊查询的并不能满足需求。