问题背景:
在 Java 开发过程中,操作数据库是一个常见的任务。在这个过程中,有一些常见的 SQL 问题会困扰开发人员。其中一个常见的问题是处理逗号分隔的字符串,尤其是在查询中需要进行逗号分隔字符串的匹配。本文将介绍这个问题,并提供解决方案,特别是介绍如何使用 `find_in_set
` 函数来解决这一问题。无论是初学者还是有经验的开发人员,都可能会在操作数据库时遇到这些问题,因此本文将对这些问题进行详细讨论。
需求:
有一个教职表staff,里面有一个字段dept_id,教职可以关联多个机构id,使用逗号分割存的是字符串;
有一个用户表user,里面有一个range字段标识管理范围,管理范围存的是多个dept_id,逗号分割开的;现在的需求是:要根据用户的管理范围查询该用户所管理的教职;
假设有一个用户的range是'1,2,3',那么可以是用sql来查询
解决办法:
select * from staff where find_in_set('1',dept_id) or find_in_set('2',dept_id) or find_in_set('3',dept_id);
加红的字体应该是在代码里进行拼接,不管是用哪种ORM框架,只需要用循环即可拼接,比如用mybatis的xml即可用foreach标签进行拼接;