Java开发中遇到的sql问题,逗号字符串匹配逗号字符串查询,find_in_set解决你的烦恼,操作数据库的程序员一定会遇到的问题

本文讲述了Java开发者在操作数据库时如何解决处理逗号分隔字符串的问题,特别是在查询时使用`find_in_set`函数。以教职表和用户表为例,介绍了如何根据用户管理范围查询对应教职,以及如何在MyBatis中利用foreach标签动态拼接SQL查询条件。
摘要由CSDN通过智能技术生成

 问题背景:

         在 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标签进行拼接;

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值