一点PHP博客分享关于如何在mysql中查询一个字段中包含某个值的方法,例如下面这个图的需求。
如果现在要把1和3都查询出来,那sql需要怎么写。
解决办法
其实,解决这个问题的思路有很多,方法就更多了。抛开其它的不讲,我们只站在mysql角度来讲,仅用mysql查询实现就有三种方法:
1、单个值查询使用myql函数:FIND_IN_SET()。
1 |
SELECT * FROM `by_content` WHERE FIND_IN_SET('1',title); |
2、多个值模糊查询,使用mysql正则:REGEXP。此方式相当于( LIKE '%1%' OR LIKE '%3%' OR LIKE '%5%' )
1 |
SELECT * FROM `by_content` WHERE title REGEXP '(1|3|5)'; |
3、多个值匹配查询,使用mysql正则:REGEXP,此方式相当于( FIND_IN_SET('1',title) OR FIND_IN_SET('3',title) OR FIND_IN_SET('5',title) )
1 |
SELECT * FROM `by_content` WHERE title REGEXP '(^|,)(1|3|5)(,|$)'; |
我的最终建议是用:mysql字符串find_in_set函数,完整sql语句如下:
1 |
SELECT * FROM `by_content` WHERE find_in_set('1', title) UNION SELECT * FROM `by_content` WHERE find_in_set('3', title); |
以上就是一点PHP博客分享关于如何在Mysql中查询字段中包含指定值的全部内容。