场景介绍
人有时会身兼数职,需要查找出其中担任某一职务的都有哪些人,如下面position字段,不同的职务用数字表示,多个职务以逗号隔开。
先要查找出担任1职务的人员,通过以下两种方式来查询。
方式一
采用模糊查询,匹配出1职务的记录,如下SQL:
select * from user where position like '%1%'
- 1
查询结果如下,仔细观察你会发现position为10的也被查出来了,但这个不符合业务要求。
方式二
采用MySQL的原生函数find_in_set(str,array)来查询,SQL如下:
select * from user where find_in_set(1,position)
- 1
查询结果如下,符合要求。
函数介绍
FIND_IN_SET(str,strlist),注意其中strlist只识别英文逗号。
***find_in_set(425,arrparentid)
***str:你要查的字符串信息 例如‘425‘
***strlist:数据库字段字符串信息 例如 arrparentid ‘0,425,245,483’
***能查出你要查的值和数据库字段里面某个值一样的查出来返回结果
https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_find-in-set