mysql之 find_in_set()、INSTR()、in

2023-05-16

1、find_in_set() 函数 :

 查询字段(str)在(strlist)中的位置

1.1、语法

FIND_IN_SET (str,strlist

str :要查询的字符串。

strlist :字段名, 参数以”,”分隔。 如 (1,2,6,8,10,22)。

注:

字符串str在 (由N个子链 组成的字符串列表strlist) 中,则返回值的范围在 1 到 N 之间。

如果str不在strlist中 或 strlist 为空字符串,则返回值为 0。

如任意一个参数为NULL,则返回值为 NULL。

1.2、示例:

SELECT FIND_IN_SET('b', 'a,b,c,d'); -- 结果:2 ,因为b 在strlist集合中放在2的位置(从1开始)。
select FIND_IN_SET('1',"1,2,3"); 	-- 返回:1 
select FIND_IN_SET('2',"1,2,3"); 	-- 返回:2   
select FIND_IN_SET('',"1,2,3");	 	-- 返回:0 
select FIND_IN_SET('2',""); 		-- 返回:0 
select FIND_IN_SET(null,"1,2,3");   -- 返回:null
select FIND_IN_SET('1',null); 		-- 返回:null
select FIND_IN_SET(null,null); 		-- 返回:null

2、instr()函数

俗称:字符查找函数。 获取子串第一次出现的索引,如果没有找到,则返回0(从1开始)。

2.1、语法

格式一:

        instr( string1, string2 )   

        说明: instr(源字符串, 目标字符串)

       例如:INSTR('apple','a'),返回的查询结果是1(a出现在字符串‘apple’中的第一个索引;         

3、效率

IND_IN_SET 效率

SELECT * FROM fast_input f where FIND_IN_SET(id,'4,14,144');
受影响的行: 0
时间: 0.022s

INSTR 效率

SELECT * FROM fast_input f where INSTR(CONCAT(',','4,14,144',','),CONCAT(',',id,','))>0;
受影响的行: 0
时间: 0.032s

IN 效率

SELECT * FROM fast_input f where id in('4','14','144');
受影响的行: 0
时间: 0.001s

从上面这里可以清楚的看到,IN由于使用了主键的索引,效率最高。其次是 FIND_IN_SET,最慢的是INSTR。

从而得到一个效率结果排名:IN() 效率 > FIND_IN_SET() > INSTR()

总结:

在实际应用中,大家可以根据实际情况使用IN或者FIND_IN_SET函数,一个效率高,一个运用方便。像我这里,传过来接收的参数是一个类似于:'1,2,3,4,5,6' 的字符串,这种情况直接用 IN 是无效的,需要把字符串分割再重新组装,我就需要直接用 FIND_IN_SET 简单多了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mysql之 find_in_set()、INSTR()、in 的相关文章

  • 从数据库中给定时间起经过的时间

    我有一个 HTML 表 其中包含从数据库中提取的记录 我正在使用 PHP MySQL 我的表中名为 Timer 的列未从数据库中检索 我需要在此处显示经过的时间 从数据库中的特定时间开始 例如 假设现在的时间是2013年2月21日下午6点2
  • Java MYSQL/JDBC 查询从缓存的连接返回过时的数据

    我一直在 Stackoverflow 中寻找答案 但似乎找不到不涉及 Hibernate 或其他数据库包装器的答案 我直接通过 Tomcat 6 Java EE 应用程序中的 MYSQL 5 18 JDBC 驱动程序使用 JDBC 我正在缓
  • MYSQL 查询 WHERE IN 与 OR

    我开发了一个使用 OR 查询的系统 SELECT FROM tableA JOIN tableB ON idA idB WHERE idA 1 OR idA 2 OR idA 3 OR idA 4 OR idA 5 OR idA 100 与
  • 有关 payment_status 的帮助 PayPal 已退款 已撤销 部分退款 ION

    如果会员订阅和 或支付一次付款并且他们请求退款 撤销或部分退款 下面的脚本是否可以与通过 IPN 发送的 IPN 消息一起使用 if payment status Refunded payment status Reversed payme
  • 表已满(使用 MEMORY 引擎)

    我想将生产数据库传输到我的开发机器上进行测试 它有 6 张桌子MEMORY出于性能目的的引擎 I did mysqldump routines hxxx uxxx pxxx prod database gt prod dump sql 当我
  • 使用 cfchart 标签在单个饼图中显示多个查询的数据

    请考虑以下代码 现在我的代码中有以下代码 cfm页面内的 tag DataSource xx xx x xx Name of the database sgemail Name of the relevant column event vc
  • 为什么将 MySQL 凭据放在 www 目录之外? [复制]

    这个问题在这里已经有答案了 可能的重复 将核心类放在 Web 根目录之上 好还是坏主意 https stackoverflow com questions 3648739 putting core classes above the web
  • Python设置1和True的解释

    在 IPython 3 交互式 shell 中 In 53 set2 1 2 True hello In 54 len set2 Out 54 3 In 55 set2 Out 55 hello True 2 是因为 1 和 True 得到
  • 从所有表中选择

    我的数据库中有很多表都具有相同的结构 我想从所有表中进行选择 而不必像这样列出所有表 SELECT name FROM table1 table2 table3 table4 我尝试过 但这不起作用 SELECT name FROM 有没有
  • java中如何知道一条sql语句是否执行了?

    我想知道这个删除语句是否真的删除了一些东西 下面的代码总是执行 else 是否删除了某些内容 执行此操作的正确方法是什么 public Deleter String pname String pword try PreparedStatem
  • 如何在 MySQL Insert 语句中添加 where 子句?

    这不起作用 INSERT INTO users username password VALUES Jack 123 WHERE id 1 有什么想法如何通过 id 将插入范围缩小到特定行吗 在插入语句中 您不会有现有行来执行 where 语
  • #1115 - 未知字符集:'utf8mb4'

    我的电脑上运行着一个本地网络服务器 用于本地开发 我现在正处于导出数据库并导入到我的托管 VPS 的阶段 导出然后导入时出现以下错误 1115 未知字符集 utf8mb4 有人能指出我正确的方向吗 该错误明确表明您没有utf8mb4您的阶段
  • WHERE 条件基于 PK 的查询是否建议使用“LIMIT 1”?

    我正在查询 mySQL 数据库以检索 1 个特定行的数据 我使用表主键作为 WHERE 约束参数 E g SELECT name FROM users WHERE userid 4 userid 列是表的主键 在 mySQL 语句末尾使用
  • 在PHP中,如何在表格中显示数组内容

    如果我在 MySQL 客户端中进行选择 我将得到如下所示的输出 mysql gt select FROM group LIMIT 2 group id group supergroup id group deletable group la
  • MySQL Workbench 忽略外键

    在处理 MySQL Workbench 中的 SQL 编辑器时 我偶然发现了一些奇怪的事情 其中 执行似乎忽略了外键约束 这是一个例子 create database testdb use testdb create table t1 te
  • 日志中每天的每周活跃用户数

    我想知道是否有人可以帮助我使用一些 SQL 来返回两天或更长时间内登录到数据库表的唯一用户数量 让我们使用 7 天作为参考 我的日志表在每一行中包含时间戳 ts 和 user id 表示该用户当时的活动 以下查询返回此日志中的每日活跃用户数
  • 数据库级别的别名列名 [MySQL]

    别名 可能是错误的词 因为它是在将列 表名称作为查询中的其他名称引用的上下文中使用的 我感兴趣的是是否有一种方法可以在数据库中为列指定两个名称 如果我要打印这样的表格 它看起来会是这样的 mysql gt SELECT FROM User
  • 对于相同的查询,MySQL Workbench 比 Python 快得多

    MySQL Workbench 中的以下查询需要 0 156 秒才能完成 SELECT date time minute price id FROM minute prices WHERE contract id 673 AND TIMES
  • 如何将“mysql source”命令与 mysql 变量一起使用?

    我需要从 mysql shell 执行一个基于如下条件的 SQL 文件 mysql gt 源 var 其中 var 包含文件名 这不可能 source是MySQL客户端程序在本地识别并执行的命令 变量存在于服务器上 因此客户端不知道什么 v
  • 退出 PHP 脚本后终止或停止 MySQL 查询

    我在工作中运行一个统计服务器 由于运行的查询量很大 该服务器有时会变得非常慢 我们的营销团队使用它作为主要统计工具 团队中的某些人有时会在脚本结束之前退出脚本 通过关闭浏览器或选项卡 同时 SQL 查询继续执行 当有人关闭或离开 PHP 脚

随机推荐

  • ModuleNotFoundError: No module named ‘yaml‘

    看到 ModuleNotFoundError No module named yaml 时 xff0c 第一想法安装 34 yaml 34 However xff0c 当你执行完 xff1a pip install yaml 你惊讶的发现
  • 内存单元按字节编址,地址0000A000H〜0000BFFFH共有___个存储单元

    内存单元按字节编址 xff0c 地址0000A000H 0000BFFFH共有 个存储单元 A xff0e 8192K B xff0e 1024K C xff0e 13K D xff0e 8K 答案 xff1a D 解析 xff1a 首先科
  • DAY21 - 抽象类与接口

    第5章 抽象类 5 1 基本介绍 我们写了一个最简单的抽象类 5 2 抽象类的具体的细节 5 3 抽象类的最佳实践 代码 5 4 抽象方法的练习题 说明 抽象类可以没有抽象方法 xff0c 而且 xff0c 如果抽象类有一个静态方法 实现
  • OSError: [WinError 126] 找不到指定的模块。【专治疑难杂症】

    OSError WinError 126 找不到指定的模块 Error loading D xxxxxxx lib site packages torch lib asmjit dll or one of its dependencies
  • 接地电阻的测试要求

    接地电阻的测试要求 交流工作接地电阻不应大于4 安全工作接地电阻不应大于4 直流工作接地电阻应按计算机系统具体要求确定防雷保护地接地电阻不应大于10 对于屏蔽系统若采用联合接地 xff0c 其接地电阻不应大于1 get了吗 xff1f 小七
  • http请求状态码表示的意义

    http请求状态码表示的意义 1 4开头的http状态码表示请求出错 400服务器不理解请求的语法 401请求要求身份验证 对于需要登录的网页 xff0c 服务器可能返回此响应 403服务器拒绝请求 404服务器找不到请求的网页 405禁用
  • word里面插入图片,图片格式是嵌入型,为什么图片会隐藏在文字下面?(比网上那些治标不治本的方法管用的多,亲测有效,希望顶上去让有这个问题的所有人看到)

    word文档里面插入图片 xff0c 图片格式是嵌入型 xff0c 为什么图片会隐藏在文字下面 xff1f 话不多说 xff0c 直奔主题 xff1a 我们在写文档的时候回遇到一个问题 xff0c 当我们在文档中插入一张图片的时候 xff0
  • 单片机蜂鸣器实验

    单片机蜂鸣器实验 蜂鸣器 xff1a 是一种一体化结构的电子讯响器 xff0c 采用直流电压供电 xff0c 广泛应用于计算机 打印机 复印机 报警器 电子玩具 汽车电子设备 电话机 定时器等电子产品中作发声器件 蜂鸣器主要分为压电式蜂鸣器
  • Python网络爬虫(五)——获取代理IP

    设置代理IP的原因 如果我们使用Python爬虫爬取一个网站时 xff0c 并且需要频繁访问该网站 假如一个网站它会检测某一段时间某个IP的访问次数 xff0c 如果访问次数过多 xff0c 它会禁止你的访问 所以你可以设置一些代理服务器来
  • ros安装 catkin_make失败

    错误如下 xff1a 在ros安装时 xff0c 运行到建立工作空间 xff0c 然后编译catkin make出错 首先一个是python 版本兼容性问题 解决办法 检查一下Python的版本 xff1a python V 检查一下cat
  • Ubuntu---mysql出现ERROR1698(28000):Access denied for user root@localhost错误解决方法

    查看mysql版本 xff1a 安装完成后 xff0c 登录mysql的时候就出现了如下错误 xff1a 因为安装的过程中没让设置密码 xff0c 可能密码为空 xff0c 但无论如何都进不去mysql 下面是处理过程 xff1a Step
  • 朱有鹏老师linux核心大讲堂---ARM裸机第十一部分 NandFlash和iNand学习笔记

    目录 1 NandFlash的接口 数据手册 xff1a K9F2G08 K9F4G08 2 NandFlash结构框图 3 Nandflash的结构 4 NandFlash常见操作以及流程分析 5 S5PV210的NandFlash控制器
  • 查看KerasTensor具体值

    之前碰到过一次这个问题 xff0c 一直没解决 xff0c 这次又又碰上了 xff0c 在模型采用Sequential xff08 xff09 方式定义的情况下 xff0c 找到了一个解决办法 xff0c 在此分享一下 xff08 如果有其
  • 面向深度学习系统的对抗样本攻击与防御

    研究生涯即将开始 xff0c 现在做的是对抗样本攻击与防御 xff0c 开始每天写博客 xff0c 记录一下自己的学习历程 1 对抗样本 尽管深度学习解决某些复杂问题的能力超出了人类水平 xff0c 但也面临多种安全性威胁 2013年 xf
  • VNC启动出错的处理汇总

    1 vncserver 1尝试启动VNC vncserver 1 2 ps进程并kill掉所有的PS span class token function ps span span class token parameter variable
  • LeetCode 24 螺旋矩阵

    螺旋矩阵 LeetCode 问题描述问题分析代码 问题描述 给定一个包含 m x n 个元素的矩阵 xff08 m 行 n 列 xff09 xff0c 请按照顺时针螺旋顺序 xff0c 返回矩阵中的所有元素 示例 1 输入 1 2 3 4
  • 黑苹果安装 戴尔灵越3568 驱动篇

    本教程主要适用于安装后驱动的安装和细节问题 xff0c 安装教程基本一样 xff0c 就没有介绍 xff0c 希望谅解 最近在公司电脑上装了黑苹果之后体验不错 xff0c 自己的本本上也装了一个 安装接近完美 xff0c 除wif不能驱动
  • ubuntu1804(或1604)换清华源(含其他源地址)

    将ubuntu的源换成国内源会大大提高更新速度 笔者习惯用清华源 xff0c 故此笔记就以清华源为准绳进行介绍 xff0c 为了利于大家使用 xff0c 同时也附上国内其他几个主要的源 备份源列表 终端输入 xff1a sudo cp et
  • moby、docker-ce与docker-ee

    原文链接 xff1a https blog csdn net yk20091201 article details 80016135 1 moby docker ce与docker ee 最早的时候docker就是一个开源项目 xff0c
  • mysql之 find_in_set()、INSTR()、in

    1 find in set 函数 xff1a 查询字段 str 在 strlist 中的位置 1 1 语法 FIND IN SET str strlist str xff1a 要查询的字符串 strlist xff1a 字段名 xff0c