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

成功语句

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 * FROM users WHERE emails like "%b@email.com%";

 

但是这样子的话就会把bb@email.com也查出来了就不符合需求了
 
方法二
 
利用mysql 字符串函数 find_in_set();
 
1
SELECT * FROM users 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模糊查询的并不能满足需求。

 

相关推荐

网友评论(0)