Mysql中find_in_set()函数使用说明

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)即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值