1、语法
# str是字符串,strlist是以英文逗号,分隔的字符串组合,find_in_set()函数只认英文逗号,为分隔符
find_in_set()(str,strlist)
用法1(用在判断语句中,不常用):
如果将starlist用英文逗号,分隔成数组,然后可以判断str是否存在该数组中,如果存在返回true,否则返回false;
其实类似于以下java代码:
String str = "1";
String strlist = "1,2,3";
boolean contains = Arrays.asList(strlist.split(",")).contains(str);
System.out.println(contains);
用法2(用在查询语句中,不常用):
# 返回字符串在字符串组合中的位置(位置从1开始),如果字符串在字符串集合中不存在,那么将返回0
select FIND_IN_SET('2', '1,2'); 返回2,也就是位置是2
select FIND_IN_SET('6', '1'); 返回0,由于strlist中不存在str,所以返回0
3、示例
select * from t_dept where find_in_set(#{deptId}, path)
注意:如果#{deptId}对应'1',path是'1,2,3',那么该条数据就会返回
4、应用场景
如果有一张部门表,部门表里面有id、path,其中path是所有上级部门id以及当前部门id组成的字符串组合(id中间用,分隔),当我们想查询当前部门下面所有子级部门的时候,只需要使用
select * from t_dept where find_in_set(#{deptId}, path)即可