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

这篇具有很好参考价值的文章主要介绍了Mysql中的find_in_set() 函数用法详解及使用场景。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

select FIND_IN_SET('1', '1,2,3');
// 结果:1
select FIND_IN_SET('3', '1,2,3');
// 结果:3
select 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) ;

查询结果:
find_in_set()函数,数据库,SpringBoot,mysql,数据库,java
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') ;

find_in_set()函数,数据库,SpringBoot,mysql,数据库,java

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

2.like和FIND_IN_SET的区别:

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

find_in_set()函数,数据库,SpringBoot,mysql,数据库,java

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

find_in_set()函数,数据库,SpringBoot,mysql,数据库,java文章来源地址https://www.toymoban.com/news/detail-534955.html

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

到了这里,关于Mysql中的find_in_set() 函数用法详解及使用场景的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python中的睡眠函数用法详解

    Python中的睡眠函数用法详解 睡眠函数是Python中常用的函数之一,它允许程序在执行过程中暂停一段时间。在进行并发编程、定时任务或模拟等场景中,睡眠函数特别有用。本文将详细介绍Python中睡眠函数的用法,并提供相应的源代码。 Python中的睡眠函数由time模块提供,具体

    2024年02月05日
    浏览(55)
  • Python中的filter函数用法详解

    目录 引言 一、filter函数基本用法 二、filter函数应用场景 1、筛选符合条件的元素 2、数据清洗和预处理 3、复杂条件筛选 4、与其他函数结合使用 三、filter函数与lambda表达式 四、filter函数与列表推导式 五、总结 Python中的filter函数是一种内置的高效过滤器,用于从序列中筛选

    2024年02月21日
    浏览(55)
  • 一文搞懂 MySQL 中的常用函数及用法

    MySQL是一种常用的关系型数据库管理系统,它提供了许多内置函数来处理数据。本文将介绍MySQL中的各种常用函数,包括字符串函数、日期函数、数学函数、聚合函数等。 1.1CONCAT函数 CONCAT函数用于将两个或多个字符串连接在一起。它的语法如下: 其中,str1、str2等为要连接的

    2024年02月10日
    浏览(38)
  • mysql中SUBSTRING_INDEX函数用法详解

    MySQL中的SUBSTRING_INDEX函数用于从字符串中提取子字符串,其用法如下: 参数说明: str :要提取子字符串的原始字符串。 delim :分隔符,用于确定子字符串的位置。 count :指定要返回的子字符串的数量。如果为正数,则从字符串的起始位置开始计数;如果为负数,则从字符串

    2024年04月23日
    浏览(53)
  • python中的range函数|python中的range函数|range()函数详解|Python中range(len())的用法

    range() 是 Python 内置的一个函数,用于生成一个整数序列。具体来说,它的定义如下: start、stop、step 分别表示序列的起始值、终止值和步长。start 和 step 是可选参数,如果不指定则默认为 0 和 1。 当只传入一个参数时,表示生成从 0 开始、小于该参数的整数序列。例如: 这

    2024年02月07日
    浏览(64)
  • MySQL中的@i:=@i+1用法详解

    在MySQL中, @i:=@i+1 是一个非常有用的表达式,用于在查询中生成一个递增的序列号。它可以帮助我们对结果进行编号,或者在需要连续的数字序列时提供便利。 我们先来了解一下MySQL中的用户变量。用户变量是一个用户定义的变量,其以@开头。我们可以在查询中使用用户变量

    2024年02月16日
    浏览(33)
  • 【MATLAB】find函数及其用法

            返回一个包含数组 X 中每个 非零元素的线性索引向量 。         如果 X 为向量,则 find 返回方向与X相同的向量。如果 X 为多维数组,则 find 返回由结果的 线性索引组成的列向量 。如果 X 包含非零元素或为空,则 find 返回一个空数组。         线性索引组

    2023年04月09日
    浏览(45)
  • set用法详解

    ES6中的Set是一种新的数据结构,类似于数组,用于存储有序的数据。 Set没有随机访问的能力,不能通过索引来获取具体的某个元素 Set中的元素具有唯一性,不允许存储相同的元素。 Set本身是一个构造函数,可以用来实例化Set对象。 通过add()方法可以向Set中添加元素,如果添

    2024年01月23日
    浏览(29)
  • Mysql中的 IFNULL 函数的详解

    目录 一、概念 二、语法 三、Demo 举例说明 创建表 加入数据 运行结果 3.1举例一 3.2举例二 3.3举例三 3.4举例四 注意事项 在mysql中IFNULL() 函数用于判断第一个表达式是否为 NULL,如果第一个值不为NULL就执行第一个值。第一个值为 NULL 则返回第二个参数的值。 使用技巧见: 3.2举

    2024年02月16日
    浏览(64)
  • Hive之grouping sets用法详解

    GROUPING SETS: 根据不同的维度组合进行聚合,等价于将不同维度的GROUP BY结果集进行UNION ALL GROUPING__ID:表示结果属于哪一个分组集合,属于虚字段 关于grouping sets的使用,通俗的说,grouping sets是一种将多个group by 逻辑写在一个sql语句中的便利写法。 说明: 1、select子句中的G

    2024年02月02日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包