Mysql:FIND_IN_SET 函数在逗号分隔的列表中搜索指定的值

FIND_IN_SET 函数用于在逗号分隔的列表中搜索指定的值。

语法: FIND_IN_SET(str,strlist),其中 str是要查找的值, strlist是逗号分隔的列表。函数返回值是 str在 strlist中的位置,位置从1开始,如果找不到则返回0

SELECT FIND_IN_SET('blue', 'red,blue,green,yellow') AS position

查询部门表:对部门表中ancestors列数据进行过滤查找,含有33的数据

方式一:通过find_in_set函数

方式二:通过like查询,和上述结果一致

select * from dept where ancestors like '%33%'

两者之间的区别:

 FIND_IN_SET 函数用于在逗号分隔的列表中搜索指定的值,根据逗号分割完全匹配才行,如果33匹配列表(334,32,33 )只会匹配到第3个不会匹配第1个

LIKE 用于检查列中是否包含特定字符 like '%字段%' 会匹配包含字段的数据,不会根据逗号或其他字符的影响

mybatisplus中可以使用LambdaQueryWrapper 实现查询

LambdaQueryWrapper<Dept> queryWrapper = new LambdaQueryWrapper();
queryWrapper.apply("find_in_set({0},ancestors)",deptId);//{0} 是占位符,deptId要匹配的数据
List<Dept> dept= super.list(queryWrapper);
  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值