mysql查询FIND_IN_SET REGEXP实践示例
目录
- 背景
- FIND_IN_SET实现
- REGEXP实现
- 如何选择
背景
数据库存在一个字段,里面的数据是用逗号隔开存储的,比如某人的爱好、喜欢的电影类型等场景
现在前台需要根据具体的id查询相应的结果,比如查询某个类型电影有哪些人喜欢
FIND_IN_SET实现
<if test="query.movieTypeId != null"> AND FIND_IN_SET(${query.movieTypeId}, movie_type_ids) </if>
注意:FIND_IN_SET字符串之间不要有空格,空格可能导致查询失败!
REGEXP实现
<if test="query.movieTypeId != null"> AND movie_type_ids REGEXP '[[:<:]]${query.movieTypeId}[[:>:]]' </if>
如何选择
一般来说,FIND_IN_SET()
比 REGEXP
的查询效率更高。这是因为 FIND_IN_SET()
函数是一个 MySQL 内置函数,而 REGEXP
是一个正则表达式引擎,需要进行更多的计算。
如果你需要进行更为复杂的匹配操作,可以考虑使用 REGEXP
。REGEXP
最大的优势在于可以进行高级的匹配操作,因此,在实际使用中需要根据具体情况来选择不同的匹配方式,以达到最优的查询效率。
以上就是mysql查询FIND_IN_SET REGEXP实践示例的详细内容,更多关于mysql查询的资料请关注我们其它相关文章!
相关推荐
-
mysql查询过去24小时内每小时数据量的方法(精确到分钟)
目录 项目场景: 问题描述 解决方案: 附:Mysql 查询每小时数据的总数 总结 项目场景: 获取过去24小时每小时数据量(没有为0) 问题描述 时间段要求精确到分钟,即:10.33 ~ 11.33,11.33~12.33…… 解决方案: 第一步:获取24个时间点: 1.使用数据量一定大于24的表(可以是数据库自带的,也可以是自己项目的) SET @i=-1; SELECT DATE_SUB( NOW(),INTERVAL ( (@i:=@i+1) ) HOUR ) AS 'time' FRO
-
mysql 模糊查询 concat()的用法详解
目录 mysql 模糊查询 concat() 补充:MySQL之concat的用法 一.concat()函数 二.concat_ws()函数 三.group_concat()函数 四.concat_ws()和group_concat()联合使用 mysql 模糊查询 concat() concat() 函数,是用来连接字符串. 精确查询: select * from user where name=”zhangsan” 模糊查询: select * from user where name li
-
MySQL自动为查询数据结果加序号
目录 数据表 MySQL给查询加序号 解释说明 相关知识点 数据表 DROP TABLE IF EXISTS tb_score; CREATE TABLE tb_score( id INT(11) NOT NULL auto_increment, userid VARCHAR(20) NOT NULL COMMENT '用户id', subject VARCHAR(20) COMMENT '科目', score DOUBLE COMMENT '成绩', PRIMARY KEY(id) )ENGI
-
mysql中如何查询数据库中的表名
目录 查询数据库中的表名 查询一个数据库中含有某关键词的表名 查询数据库中所有的表 总结 查询数据库中的表名 查询一个数据库中含有某关键词的表名 搜索一个数据库中包含一些关键字,词的表. SELECT TABLE_NAME FROM information_schema. TABLES WHERE table_schema = '数据库名' AND TABLE_NAME LIKE '%name%'; 例: mysql> select table_name fr
-
MySQL查询语句简单操作示例
本文实例讲述了MySQL查询语句简单操作.分享给大家供大家参考,具体如下: 查询 创建数据库.数据表 -- 创建数据库 create database python_test_1 charset=utf8; -- 使用数据库 use python_test_1; -- students表 create table students( id int unsigned primary key auto_increment not null, name varchar(20) default '',
-
Mysql join连接查询的语法与示例
连接查询: 是将两个查询(或表)的每一行,以"两两横同对接"的方式,所得到的所有行的结果,即一个表中的某行,跟另一个表中的某行.进行"横向对接",得到一个新行. 连接查询包括以下这些不同形式,连接方式: 交叉连接.内连接.外连接(分:左外连接,右外连接) 连接查询语法: select * from 表名 [连接方式] join 表名 [on 连接条件] where ...; 测试数据: mysql> select * from test; +----+----
-
MySQL查询字段实现字符串分割split功能的示例代码
目录 问题背景 场景模拟 方法实现 SUBSTRING_INDEX LENGTH REPLACE SQL解析 问题背景 查询MySQL中用逗号分隔的字段[a,b,c]是否包含[a] 场景模拟 现有表[ec_logicplace],如下图所示: 要求判断数值[1]是否存在于表[ec_logicplace]中的[actual_place_id]中 方法实现 首先将[actual_place_id]字段用逗号拆分查询出来 通用模板为: SELECT SUBSTRING_INDEX( SUBSTRING
-
mysql查询本周内每天统计量按天展示的示例代码
目录 本周 前七天 本月 本年按月展示 本周 SELECT b.item,IFNULL(a.COUNT,0) AS VALUE FROM ( SELECT DATE(subdate(curdate(),date_format(curdate(),'%w')-1)) as item union all SELECT DATE(DATE_ADD(subdate(curdate(),date_format(curdate(),'%w
-
jdbc中自带MySQL 连接池实践示例
引言 在上期文章自定义 MySQL 连接池中,我提到了没找到一个特别合适的 MySQL 连接池实现,所以自己写了一个基于通用池化框架commons-pool2的 MySQL 连接池,并且模仿了 Go 语言的gorm框架设计思路,把借和还的操作不暴露给用户,只处理用户发来的 SQL 语句的思路,封装了一个com.funtester.db.mysql.MysqlPool. 可惜打脸的事情来的太快了,在录制视频的时候偶然发现了 Intellij 代码提示有个com.mysql.cj.jdbc.Mysq
-
php+mysql查询实现无限下级分类树输出示例
本文实例讲述了php+mysql查询实现无限下级分类树输出.分享给大家供大家参考,具体如下: 这里介绍的php结合mysql查询无限下级树输出,其实就是无限分类.给各位整理了几个php无限分类的例子. 树输出: function get_array($user_id,$top=0){ global $mysql,$_G; $sql = "select user_id as name from `{spreads_users}` where p1.spreads_userid='{$user_id
-
MySQL查询缓存优化示例详析
目录 一.概述 二.查询优化内容 1.查询缓存的原理 2.查询缓存的优缺点 3.不能应用查询缓存的内容 4.查询缓存相关的服务器变量 5.SELECT语句的缓存控制 6.查询缓存相关的状态变量 7.查询的优化的检查路线 8.命中率和内存使用率估算 9.版本差异 三.总结 一.概述 在日常使用数据库中,80%的数据请求都是查询,而余下的20%是更新或者增加数据.如何提升查询性能,便是提高数据库处理能力的关键. 二.查询优化内容 1.查询缓存的原理 查询的路线图: 缓存SELECT操作或预处理查询的
-
Mysql中FIND_IN_SET()和IN区别简析
前段时间项目中使用到Mysql的FIND_IN_SET函数,感觉挺好用的.过一段时间,老大找到我说,这个需要改为IN,哈哈,只能改了,原因会在下面分析到! 弄个测试表来说说两者的区别,测试数据直接在问答区copy一份,能说明问题就行,哈哈,如果侵犯您的版权还请见谅,互联网吗,就需要分享! 测试代码: CREATE TABLE `test` ( `id` int(8) NOT NULL auto_increment, `name` varchar(255) NOT NULL, `list` var
-
MySQL查询in操作 查询结果按in集合顺序显示
MySQL 查询in操作,查询结果按in集合顺序显示 复制代码 代码如下: select * from test where id in(3,1,5) order by find_in_set(id,'3,1,5'); select * from test where id in(3,1,5) order by substring_index('3,1,2',id,1); 偶尔看到的...或许有人会注意过,但我以前真不知道 SQL: select * from table where id IN
-
MySQL分区表的最佳实践指南
前言: 分区是一种表的设计模式,通俗地讲表分区是将一大表,根据条件分割成若干个小表.但是对于应用程序来讲,分区的表和没有分区的表是一样的.换句话来讲,分区对于应用是透明的,只是数据库对于数据的重新整理.本篇文章给大家带来的内容是关于MySQL中分区表的介绍及使用场景,有需要的朋友可以参考一下,希望对你有所帮助. 1.分区的目的及分区类型 MySQL在创建表的时候可以通过使用PARTITION BY子句定义每个分区存放的数据.在执行查询的时候,优化器根据分区定义过滤那些没有我们需要的数据的分区,这
随机推荐
- SQL注入原理与解决方法代码示例
- php批量删除操作(数据访问)
- MySQL从命令行导入SQL脚本时出现中文乱码的解决方法
- JavaScript 基础问答一
- Bootstrap3制作搜索框样式的方法
- centos中NAT模式下静态IP连接外网
- 12306验证码破解思路分享
- ASP中Session技巧 默认过期时间为20分钟
- ViewDragHelper实现QQ侧滑效果
- php引用计数器进行垃圾收集机制介绍
- linux系统挂载数据盘的方法(视频图文教程)
- javascript之可拖动的iframe效果代码
- 通用的二级菜单代码(css+javascript)
- 用javascript获取任意颜色的更亮或更暗颜色值示例代码
- 从js向Action传中文参数出现乱码问题的解决方法
- 将CString字符串输入转化成整数的实现方法
- Android 处理OnItemClickListener时关于焦点颜色的设置问题
- Spring boot中PropertySource注解的使用方法详解
- spring基于通用Dao的多数据源配置详解
- Centos7上Mesos和Marathon的安装和配置
其他
- vant title-style自定义标题样式
- androidstudio编译 找不到 Manifest
- python mysql 数据可视化
- python实现的分层随机抽样
- laravel Validator 会把下划线转成空格
- unity实现ar手势识别
- python ssh 切换root用户 后在执行命令
- vue监听横向滚动条滚动事件
- elementui组件options中默认选中
- Math.pow 反运算
- tp 查询条件包含某个值
- vue3动态图片打包后404
- 子组件为什么首次不会触发 activated
- java获取数据库数据写入本体txt
- uniapp 上传图片二进制流
- python str后添加元素函数
- cdn服务器如何实现断点续播
- js 在页面关闭时提示 如选择取消则不关闭
- python语音交互如何判断一句话结束
- vue 域名 保存在哪