文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

MySQL之FIND_IN_SET()的用法及说明

2023-01-06 15:00

关注

一、语法

FIND_IN_SET(str,strlist)

二、用法

和in、like的区别

find_in_set(str,strlist)函数是用变量,strlist内容是逗号分隔的字符串

三、用途

举个例子一

当数据库表中,存在有逗号拼接的字符串的字段时,查询时候用FIND_IN_SET函数。

# 创建表
CREATE TABLE IF NOT EXISTS tb_test1(
	`id` INT(11) NOT NULL auto_increment,
    `name` varchar(255) NOT NULL COMMENT '名字',
    `type` varchar(255) NOT NULL COMMENT '类型: 1表示金卡;2表示银卡;3表示铜卡',
    PRIMARY KEY  (`id`)
)ENGINE = INNODB DEFAULT CHARSET = utf8 COMMENT = 'FIND_IN_SET使用';

# 新增数据
INSERT INTO tb_test1(name,type) VALUES('edg','1,2,3');
INSERT INTO tb_test1(name,type) VALUES('rng','2,3');
INSERT INTO tb_test1(name,type) VALUES('ig','1,3');

# 查询
SELECT * FROM tb_test1 WHERE FIND_IN_SET('1',type); # 返回type中包含1的记录

MySQL之FIND_IN_SET()的用法及说明

举个例子二

一张部门表中,有个userIds字段,存放的是关联的部门下用户的id;比如:‘111,112,113’。

然后需要查询返回的结果是,Dept对象中带有user的对象数组。

CREATE TABLE IF NOT EXISTS dept(
	`id` INT(11) NOT NULL auto_increment,
    `name` varchar(255) NOT NULL COMMENT '部门名字',
    `user_ids` text DEFAULT NULL COMMENT '部门人员',
     PRIMARY KEY  (`id`)
)ENGINE = INNODB DEFAULT CHARSET = utf8 COMMENT = '部门表';
<resultMap id="ResultMap" type="com.test.entity.dept" >
     <id column="id" property="id" jdbcType="INTEGER" />
     <result column="name" property="name" jdbcType="VARCHAR" />
     <result column="user_ids" property="userIds" jdbcType="VARCHAR" />
     <association property="Users" resultMap="Usesr_map" /> // 在实体类中有List<User> Users
</resultMap>

<sql id="User_Column_List" >
    user.id user_id, user.name user_name
</sql>
    
<resultMap id="Usesr_map" type="com.test.entity.User">
	<id column="user_id" property="id" jdbcType="INTEGER" />
    <result column="user_name" property="name" jdbcType="VARCHAR" />
</resultMap>


<!-- 只返回user_ids中包含的id的user记录 -->
<select id="selectOne" resultMap="ResultMap" parameterType="INTEGER" >
    SELECT
    e.id id,e.name name,e.user_ids user_ids,
    <include refid="User_Column_List"/>
    FROM dept e
    LEFT JOIN User user ON FIND_IN_SET(user.id,e.user_ids)
    WHERE e.id = #{e.id}
</select>

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯