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

MySQL 逗号分隔的字符串查询的集中方式

测试表:

CREATE TABLE users(id int(6) NOT NULL AUTO_INCREMENT,name VARCHAR(20) NOT NULL,permission VARCHAR(50) NOT NULL, -- 权限PRIMARY KEY (id)
);INSERT INTO users(name, permission) VALUES('小张','1,2,12'); 
INSERT INTO users(name, permission) VALUES('小王','11,22,32');

FIND_IN_SET函数

查询包含2的数据

SELECT * FROM users WHERE FIND_IN_SET(2,permission);

查询结果:

LIKE关键字

用于判断一个字符串是否存在于由逗号分隔的字符串列表中,存在则返回位置索引(从1开始计数),不存在返回0。例如:SELECT FIND_IN_SET('b', 'a,b,c,d'); 结果为2。

查询包含2的数据

select * from users where permission like '%2,%'

查询结果,发现有两条。不建议,并且性能较低

POSITION函数

判断子串在字符串中的位置,返回起始位置(若不存在则返回0)。例如:SELECT POSITION('abc' IN 'xyzabc'); 结果为4。通常比LIKE更高效,尤其在匹配模式固定时(如精确匹配某段文本)

类似还有locate。使用方式如下:

SELECT * FROM users WHERE position('2' in permission)>0;

查询结果

结论

综合对比,逗号分隔的字符串查询适合用find_in_set函数。如果是模糊匹配查询可以考虑使用like和position函数,无法使用索引时,position性能更优。

http://www.dtcms.com/a/495602.html

相关文章:

  • 第12章 STM32 ADC采集内部温度传感器和基准电压的配置和测试
  • 网站推广公司 wordpress.net做网站之前设置
  • 台州网站制作公司个人免费注册公司网站
  • 怎么网站建设到百度怎么样找回网站密码
  • 如何检测网站死链沧州做网站的
  • 河南特色农产品识别系统:让AI守护“中原味道”
  • Linux系统--信号--信号屏蔽(阻塞)核心函数
  • GaussDB 应用侧报Read timed out解决方法
  • 一种解决java fst序列化兼容性问题的方法
  • ROS系统中常用的数据传输方式——参数
  • 网站移动端是什么问题吗移动商城积分兑换
  • 淘宝API数据采集的日志监控与异常报警
  • 熊猫(安卓):识字软件
  • 水题记录2.3
  • Google Landmarks Dataset v2 (GLDv2):500万地标图像的识别与检索基准​(数据集概览、下载与使用全流程​)
  • 在设置feign请求的请求头透传(Header Propagation)时获取不到当前服务请求头的信息
  • 服装网站设计网站强制分享链接怎么做的
  • DevExpress WPF中文教程:Data Grid - 如何使用虚拟源?(二)
  • WPF中的变换(Transform)功能详解
  • 北京做网站主机开通成功网站建设中
  • 工业显示器在微铣削机床中的应用
  • 合肥手机网站建设陕西网站建设平台
  • 东莞网站推广及优化平台营销策略
  • exp4j并发解决
  • 学习博弈本身过程脑是怎么看的?
  • 风险感知中枢:监测预警系统的架构与核心
  • 使用ROS2 + Qt编写一个简易计算器
  • 校园资料分享平台|基于SpringBoot和Vue的校园资料分享平台(源码+数据库+文档)
  • 企业花钱做的网站出现违禁词本地wordpress 手机浏览器
  • 网站建设最基础是什么广东网站建设服务商