您现在的位置是:首页 > 学无止境 > MYSQL网站首页MYSQL MySQL中find_in_set()函数的使用

MySQL中find_in_set()函数的使用

  • 莫愁
  • MYSQL
  • 2019-04-17
简介在此最近的一个项目的设计中,有以下场景:部门和职员的两张表,部门是有很多节点的,比如XXX部门下面还细分了很多组,而职员表中是使用一个字段和具体的部门组关联的。如果我需要查询XXX部门下的所有职员呢?
字数 999.5

在一个项目的设计中,有以下场景:部门和职员的两张表,部门是有很多节点的,比如XXX部门下面还细分了很多组,而职员表中是使用一个字段和具体的部门组关联的。如果我需要查询XXX部门下的所有职员呢?

在查阅了很多资料之后,做以下记录:

部门表

其中的ancestors字段就会用于记录当前的节点的所有父节点,比如:XXX部门的id为1,XXX部门下的XXX小组的id为101,XXX部门下的XXX小组的XXX临时小组的id为201,那么此时的数据如下:

1. 首先是XXX部门的ancestors的值为1

2. 其次是XXX部门下的XXX小组的ancestors为1,101

3. 最后XXX部门下的XXX小组的XXX临时小组的ancestors为1,101,201

职员表

以上表中的dept_id就是记录的所属部门的id;

功能实现

为了实现引言所提到的功能,需要用到以下MySQL函数FIND_IN_SET(str,strlist),

str 表示要查询的字符串

strlist为字段名,以,隔开,如(1,101,201)

其意思为:查询字段strList中包含str的结果,返回null或者记录

:假如字符串str在由N个子链组成的字符串列表strlist 中,则返回值的范围在 1 到 N 之间。 一个字符串列表就是一个由一些被 ‘,’ 符号分开的子链组成的字符串。如果第一个参数是一个常数字符串,而第二个是type SET列,则FIND_IN_SET() 函数被优化,使用比特计算。 如果str不在strlist 或strlist 为空字符串,则返回值为 0 。如任意一个参数为NULL,则返回值为 NULL。这个函数在第一个参数包含一个逗号(‘,’)时将无法正常运行。

那么功能实现的写法为:


转载: 感谢您对莫愁个人博客网站平台的认可,非常欢迎各位朋友分享到个人站长或者朋友圈,但转载请说明文章出处“来源莫愁个人博客 https://www.mochoublog.com/study/174.html”。

文章评论

    • 评论
    人参与,条评论

技术在线

服务时间

周一至周日 12:00-22:00

关闭下雪
关闭背景特效