当前位置: 首页 > news >正文

MySQL 逗号分隔查询--find_in_set()函数

业务场景:

在使用MySQL的时候,可能的某个字段存储的是一个英文逗号分割的字符串(这里我们不讨论表设计的合理性),如图所示:
在这里插入图片描述
我们在查询的时候需要匹配逗号分割中的某个字符串,该怎么查询呢?

find_in_set函数:

函数结构:find_in_set(str,strlist)

  • str:要查询的字符串。
  • strlist: 字段名,示例中的 business_line_reviewer 字段。

为了方便理解,我们可以认为strlist是由多个str且以英文逗号分割组成的,函数返回的是str在strlist中的位置,返回值的范围在 1 到 N 之间,需要注意的是strlist不能以英文逗号开头。

find_in_set函数用法演示:

select id,business_line_reviewer from org_performance_approver where  find_in_set('zt19379', business_line_reviewer) > 0

查询结果:
在这里插入图片描述
完美解决了在查询的时候需要匹配逗号分割中的某个字符串的场景。

索引使用情况:

explain select business_line_reviewer from org_performance_approver where  find_in_set('zt19379', business_line_reviewer) > 0;

在这里插入图片描述
MySQL版本

select version();

在这里插入图片描述

总结:
在查阅资料寻求解决方案的时候,看到部分资料说 find_in_set 函数不支持英文逗号分割 ,我使用的 8.0.27 版本是支持的,可能是老版本不支持,这个待求证,也有资料 find_in_set 函数说不支持索引,同样我在使用的时候看了执行计划,也是支持索引的,可能也是老版本不支持。

如有不正确的地方请各位指出纠正。

http://www.lryc.cn/news/308621.html

相关文章:

  • 【物联网应用案例】智能农业的 9 个技术用例
  • 前端开发——ElementUI组件的使用
  • Unity编写Shader内置各种矩阵和方法介绍
  • 初学者如何使用QT新建一个包含UI界面的C++项目
  • 韦东山嵌入式Liunx入门驱动开发四
  • ubuntu基础操作(1)-个人笔记
  • Spring Cloud2022之OpenFeign使用以及部分源码分析
  • 【非比较排序】计算排序算法
  • 数据结构与算法 - 数组与二分查找 + Leetcode典型题
  • SQL进阶(三):Join 小技巧:提升数据的处理速度
  • 开发知识点-.netC#图形用户界面开发之WPF
  • 基于springboot实现流浪动物救助网站系统项目【项目源码+论文说明】
  • 灰度负载均衡和普通负载均衡有什么区别
  • 【二分查找】朴素二分查找
  • Windows Docker 部署 Redis
  • 什么是VR虚拟现实|虚拟科技博物馆|VR设备购买
  • 高性能API云原生网关 APISIX安装与配置指南
  • Gradio Dataframe 学习笔记
  • 深入理解计算机系统笔记
  • 300分钟吃透分布式缓存(拉钩教育总结)
  • 2024亚马逊全球开店注册前需要准备什么?
  • android Service 与 activity 通信 并不断传数据
  • Acwing-基础算法课笔记之数学知识(扩展欧几里得算法)
  • 简单排列组合题(python版)
  • 【排坑】搭建 Karmada 环境
  • 每日一类:Qt GUI开发的基石《QWidget》
  • 人大金仓与mysql的差异与替换
  • Excel2LaTeX插件的使用、LaTeX表格
  • MySQL 用了哪种默认隔离级别,实现原理是什么?
  • 【C++初阶】第四站:类和对象(下)(理解+详解)