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

Mysql中的find_in_set() 函数用法详解及使用场景

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

北京

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

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

看不清楚,换张图片

免费获取短信验证码

Mysql中的find_in_set() 函数用法详解及使用场景

一、find_in_set() 函数详解
示例:

select FIND_IN_SET('1', '1,2,3');// 结果:1select FIND_IN_SET('3', '1,2,3');// 结果:3select FIND_IN_SET('4', '1,2,3');// 结果:0// 后一个包含前一个返回大于0的元素所在位置,不包含前一个则返回0

相信大家看完以上示例就知道这个函数的大概作用了,以下是MySQL手册中官方说明

FIND_IN_SET(str,strlist),该函数的作用是查询字段(strlist)中是否包含(str)的结果,返回结果为null或记录 。str 要查询的字符串strlist 需查询的字段,参数以”,”分隔,例如如 '1,2,3'假如字符串str在由N个子链组成的字符串列表strlist 中,则返回值的范围在 1 到 N 之间。 一个字符串列表就是一个由一些被’,‘ 符号分开的子链组成的字符串。如果第一个参数是一个常数字符串,而第二个是type SET列,则FIND_IN_SET() 函数被优化,使用比特计算。 如果str不在strlist 或strlist 为空字符串,则返回值为 0 。如任意一个参数为NULL,则返回值为 NULL。这个函数在第一个参数包含一个逗号( , )时将无法正常运行。

概括一下就是(前一个字符串是A,后一个字符串是B):
如果B字符串包含A字符串:则返回大于0的值,这个值就是A字符串在B字符串的所在位置;
如果B字符串不包含A字符串:则返回0;
如果B字符串或者A字符串有任意一个是null,则返回null;
如果A字符串包含逗号,则无法执行。

二、应用场景
就拿若依的权限认证的其中一条sql来给大家举例吧:

SELECT dept_id, parent_id, ancestors, order_num, leader, phone FROM sys_dept WHERE dept_id = 101 or FIND_IN_SET(101, ancestors) ;

查询结果:
在这里插入图片描述
sql想要实现的功能就是查询部门id是101的,或者其他部门的ancestors字段(祖先)中有101的所有部门。使用FIND_IN_SET()函数完全可以实现。
那有的朋友就会说了,为什么不用in或者like呢,区别如下:
三、FIND_IN_SET()和IN、LIKE的区别:
1.IN和FIND_IN_SET的区别:

SELECT dept_id, parent_id, ancestors, order_num, leader, phone FROM sys_dept WHERE '101' IN ('101,102') ;

在这里插入图片描述

in后面只能跟常量, 如果跟字符串的话,就会和字符串的值进行完全匹配,所以上面的sql查询不到记录。但是find_in_set()函数可以使用常量或字段。

like和FIND_IN_SET的区别:

SELECT dept_id, parent_id, ancestors, order_num, leader, phone FROM sys_dept WHERE ancestors LIKE '%10%' ;

在这里插入图片描述

SELECT dept_id, parent_id, ancestors, order_num, leader, phone FROM sys_dept WHERE FIND_IN_SET(10, ancestors)  ;

在这里插入图片描述

like是广泛的模糊匹配,字符串中没有分隔符,Find_IN_SET 是精确匹配,字段值会以英文”,”分隔,Find_IN_SET查询的结果要小于like查询的结果。

来源地址:https://blog.csdn.net/Jiao1225/article/details/128376356

免责声明:

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

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

Mysql中的find_in_set() 函数用法详解及使用场景

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

下载Word文档

猜你喜欢

Mysql中的find_in_set() 函数用法详解及使用场景

一、find_in_set() 函数详解 示例: select FIND_IN_SET('1', '1,2,3');// 结果:1select FIND_IN_SET('3', '1,2,3');// 结果:3select FIND_IN_
2023-08-20

Mysql中find_in_set()函数用法详解以及使用场景

目录一、find_in_set() 函数详解二、应用场景三、FIND_IN_SET()和IN、LIKE的区别:1.IN和FIND_IN_SET的区别:2.like和FI编程客栈ND_IN_SET的区别:总结一、find_in_sjavasc
2023-03-10

mysql中find_in_set()函数用法及自定义增强函数

目录一、find_in_set()二、FIND_PART_IN_SET三、FIND_ALL_PART_IN_SET一、find_in_set()我们知道mysql提供了一个好用的函数FIND_IN_SET(str,strlist),该
mysql中find_in_set()函数用法及自定义增强函数
2024-08-13

mysql中find_in_set函数的基本使用方法

前言 这是我最近新接触到的一个函数, 我在项目中的使用场景是这样的: 有一个应用类型表,表中有parentId字段和parentIds字段,前者为父级id,后者为多级父级id,在库中都是varchar类型,parentIds由多个父级id拼
2022-05-24

mysql中find_in_set函数使用无效怎么解决

如果在MySQL中使用find_in_set函数时出现无效的问题,可能是因为函数的参数不正确或者数据存储格式有问题。以下是一些解决方法:确保find_in_set函数的参数正确:该函数接受两个参数,第一个参数是要查找的值,第二个参数是包含多
mysql中find_in_set函数使用无效怎么解决
2024-04-09

mysql中find_in_set函数的用法是什么

在 MySQL 中,FIND_IN_SET 函数用于在一个逗号分隔的字符串列表中查找某个值,并返回其在列表中的索引位置。该函数的语法如下:FIND_IN_SET(search_value, string_list)其中,search_va
mysql中find_in_set函数的用法是什么
2024-04-09

python强大的hook函数使用及应用场景

钩子函数(hookfunction)是把我们自己实现的hook函数在某一时刻挂接到目标挂载点上,这篇文章主要介绍了python强大的hook函数使用及应用场景,需要的朋友可以参考下
2023-05-19

Oracle数据库中Blob和Clob的区别及使用场景详解

标题:Oracle数据库中Blob和Clob的区别及使用场景详解在Oracle数据库中,Blob和Clob是两种用于存储大数据类型的数据字段。Blob代表二进制大对象(Binary Large Object),通常用于存储二进制数据,例如
Oracle数据库中Blob和Clob的区别及使用场景详解
2024-03-09

Python中使用len函数的用法和常见应用场景

Python中len函数的用法和应用场景在Python中,len函数是用于获取对象的长度或项数的内置函数。len函数主要用于字符串、列表、元组、字典和集合等数据类型,通过返回一个整数来表示对象的长度或者项数。在本文中,我们将详细介绍len
Python中使用len函数的用法和常见应用场景
2024-01-13

mysql中date_format函数的应用场景有哪些

将日期格式化为特定的字符串格式,如将"2021-10-15"格式化为"15/10/2021"。在SELECT语句中,将日期字段按照特定的格式显示,方便查看和分析。将日期字段进行比较或排序,需要先将日期格式化为统一的格式。将日期字段进行
mysql中date_format函数的应用场景有哪些
2024-04-09

MySQL中cast函数的应用场景有哪些

类型转换:cast函数用于将一个数据类型转换为另一个数据类型。例如,将一个字符串转换为整数、将一个浮点数转换为整数等。数据格式化:cast函数可以用于格式化日期、时间或数字等数据类型。例如,将日期格式化为特定的格式、将数字格式化为特定的精度
MySQL中cast函数的应用场景有哪些
2024-04-09

编程热搜

目录