我的编程空间,编程开发者的网络收藏夹
学习永远不晚

mysql中用逗号隔开的字段作查询用(find_in_set的使用)

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

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

mysql中用逗号隔开的字段作查询用(find_in_set的使用)

mysql中用逗号隔开的字段作查询用(find_in_set的使用)

场景说明

在工作中,经常会遇到一对多的关系。想要在mysql中保存这种关系,一般有两种方式,一种是建立一张中间表,这样一条id就会存在多条记录。或者采用第二种方式,直接在表中增加ids字段,将关联表的id拼接成用逗号分隔的字符串保存起来。
那么问题来了,如果采用第二种方式的话,查询的时候要如何处理呢

1. like查询方式

select * from XXX where ids like ‘%1%’
这种方式有个问题 如果表里面的id查过了10 ,那’%1%'就会把10,11,这些带1的id全都匹配处理。故like查询可能会查询出我们不想要的数据

2.FIND_IN_SET(str,strlist)

select * from XXX where find_in_set(‘1’, ids)
查询效果:
查询所有数据:

通过find_in_set过滤
可以看到find_in_set(‘2’, difficulty_type)将difficulty_type中包含2这个id的数据过滤出来了,且不会过滤出21,22这种数据

3.mybaits中使用

   <select id="queryList" parameterType="java.util.Map" resultType="com.zfkj.demo.entity.SjExampaperRule">       SELECT * FROM `sj_exampaper_rule`        where 1=1        <if test="ruleName!=null and ruleName!=''">            and rule_name like concat('%', #{ruleName}, '%')        if>        <if test="bankId!=null">            and bank_id = #{bankId}        if>       <if test="trainLevels!=null">            <foreach collection="trainLevels" item="trainLevel" open=" and (" close=")" index="index" separator=" or ">                find_in_set (#{trainLevel},train_level)            foreach>       if>       <if test="difficultyTypes!=null">           <foreach collection="difficultyTypes" item="difficultyType" open=" and (" close=")" index="index" separator=" or ">               find_in_set (#{difficultyType},difficulty_type)           foreach>       if>       <if test="subjects!=null">           <foreach collection="subjects" item="subject" open=" and (" close=")" index="index" separator=" or ">               find_in_set (#{subject},subject)           foreach>       if>   select>

效果:
在这里插入图片描述
在这里插入图片描述

来源地址:https://blog.csdn.net/qq_29660549/article/details/129244821

免责声明:

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

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

mysql中用逗号隔开的字段作查询用(find_in_set的使用)

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

mysql对以逗号分隔的字段内容进行查询——find_in_set函数或locate函数

mysql对以逗号分隔的字段内容进行查询 find_in_set函数 背景 使用mysql时,有可能一个字段代表一个集合,如果将这个集合单独抽成一张表又不值当的,这个时候我们存储时,可以选择用逗号将数据分隔开(只能用英文的逗号),如图所示:
2023-08-19

SQL查询之字段是逗号分隔开的数组怎么查询匹配数据

这篇文章主要介绍“SQL查询之字段是逗号分隔开的数组怎么查询匹配数据”,在日常操作中,相信很多人在SQL查询之字段是逗号分隔开的数组怎么查询匹配数据问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”SQL查询之字
2023-03-09

SQL查询之字段是逗号分隔开的数组如何查询匹配数据问题

目录字段是逗号分隔开的数组如何查询匹配数据方式一:CHARINDEX***()*****方式二:WHERE LIKEmysql逗号分隔的字段查询1.like2.find_in_set3.regexp总结字段是逗号分隔开的数组如何查询匹配数据
2023-03-06

Java8如何将List转换为用逗号隔开的字符串

这篇文章主要介绍了Java8如何将List转换为用逗号隔开的字符串,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1.使用谷歌的Joiner转换public static
2023-06-14

MySQL慢查询日志的作用和开启

前言 MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。long_query_time的默认值为10,
2022-05-21

怎么使用PHP查询去掉不等于的字段

这篇“怎么使用PHP查询去掉不等于的字段”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么使用PHP查询去掉不等于的字段”文
2023-07-05

Mysql子查询关键字的使用方式(exists)

目录1. all1.1 格式1.2 特点 1.3 操作2. any(some)1.1 格式1.2 特点1.3 操作3. in1.1 格式1.2 特点1.3 操作4. exist1.1 格式1.2 特点1.3 操作1.4 解释1. all1
2022-07-07

mssql sqlserver sql对使用逗号分隔的字符串 转换为数据表的另类方法实现

转自:http://www.maomao365.com/?p=10739 摘要: 下文讲述在sqlserver 对逗号分隔的字符串转换为数据表的另类方法实现,如下所示: 实验环境:sql server 2008 R2 实现思路: 将组合字符串
mssql sqlserver sql对使用逗号分隔的字符串 转换为数据表的另类方法实现
2015-02-01

mysql中的模糊查询怎么使用

在MySQL中,可以使用LIKE操作符进行模糊查询。LIKE操作符用于在查询中匹配模式,可以使用通配符来表示模式的一部分。以下是一些使用LIKE操作符进行模糊查询的示例:查询以指定字符串开头的数据:SELECT * FROM 表名 WHER
mysql中的模糊查询怎么使用
2024-04-09

详解MySQL like如何查询包含'%'的字段(ESCAPE用法)

在SQl like语句中,比如SELECT * FROM user WHERE username LIKE '%luchi%' SELECT * FROM user WHERE username LIKE '_luchi_',% 作为通配符
2022-05-11

MySQL中EXPLAIN的/基本使用及字段详解

目录一、介绍二、基本的使用三、字段详解3.1、id字段3.2、select_type 与 table字段3.3、partitions3.4、type字段3.5、possible_keys 与 key字段3.6、key_len字段3.7、re
MySQL中EXPLAIN的/基本使用及字段详解
2024-09-11

编程热搜

目录