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

MySQL 英文逗号隔开的数据如何模糊精确查询

在 PHP 中,如果你的数据字段内容是类似"1,3,5,13,23"这样的字符串(多个数字用英文逗号分隔),而你只想精确匹配包含数字3(即单独的3,而不是13、23、30等),那么不能直接使用 SQL 的LIKE '%3%',因为那样会误匹配包含3的其他数字。

方法一:使用 MySQL 的 REGEXP(推荐)

假设你的字段名为numbers,表名为my_table,你可以这样写 SQL:

SELECT * FROM my_table WHERE numbers REGEXP '(^|,)3(,|$)';

解释:

  • (^|,)表示字符串开头或逗号(即前面是边界)
  • 3是你要匹配的数字
  • (,|$)表示后面是逗号或字符串结尾(即后面是边界)

这样就能精确匹配单独的3,不会匹配13、23、30等。

方法三:使用 FIND_IN_SET(MySQL 特有函数)

MySQL 提供了FIND_IN_SET函数,该函数返回一个整数,表示在字符串中搜索到的位置,专门用于在逗号分隔的字符串中查找值:

SELECT * FROM my_table WHERE FIND_IN_SET('3', numbers) > 0;

注意:FIND_IN_SET要求字段值是纯逗号分隔,不能有空格。如果数据中可能有空格(如"1, 3, 5"),需要先用REPLACE(numbers, ' ', '')清理。

如果数据内容是一个 JSON 数组,则需要使用 JSON_CONTAINS() 函数来查询

JSON_CONTAINS(numbers, '3')

今天在查询包含指定的标签数据时,想到以前做过,但是想不起怎么弄的了,特此记录一下,方便后续查看。

http://www.cnnetsun.cn/news/16373.html

相关文章:

  • 第32课 PCB布局的常用操作命令介绍
  • 终极修复指南:彻底解决Atmosphere固件2168-0002启动错误
  • 第一章——办公自动化之Word报告自动生成:解放双手,高效创作
  • 压电材料的d33(纵向压电应变常数)测试流程及影响因素
  • 中烟创新连续两年被认定为国家级科技型中小企业
  • s4cmd完整指南:终极高性能Amazon S3命令行工具
  • 开题报告不是“过关文档”,而是“学术项目启动书”——Paperzz AI开题报告功能深度拆解:从选题模糊到框架清晰,它如何把你的“研究冲动”翻译成“可执行的科研计划”?
  • 1996-2025年政府采购合同公告明细数据
  • 分布式应用框架Microsoft Orleans - 2、动手实践:构建你的第一个Microsoft Orleans应用程序
  • MAC电脑如何开发淘晶驰串口屏
  • Java 中 new 一个对象的过程是怎么样的?
  • 从规则引擎到大模型:文档生成技术的十年进化与现在的最佳实践
  • AI客户端终极指南:多平台支持与工作区管理快速上手
  • 安全审查--跨站请求伪造--Fetch Metadata防护模式
  • uni-app x封装request,统一API接口请求
  • 4大维度解析DeepLX与官方API:技术实战与成本效益终极评测
  • 本地 AI 服务难共享?TRAE SOLO+cpolar 轻松打破局域网枷锁
  • 助力金融信创与云原生转型,DeepFlow 排障智能体和可观测性建设实践
  • 靠谱的模板网站建设哪家好
  • PuLID技术深度解析:重新定义人物身份定制的新范式
  • SGLang结构化生成语言:重塑大模型工具调用的新范式
  • Windows Insider免登录终极指南:轻松获取预览版更新
  • FluidNC运动控制固件:重新定义ESP32 CNC设备的智能控制
  • 【光照】Unity[PBR]环境光中的[漫反射]
  • 39、NFS与网络路由管理:配置、问题诊断及参数调优
  • CentOS7 磁盘扩容
  • PDFMathTranslate中文乱码终极解决方案:从诊断到完美修复
  • 直接数字下变频 原理解释和python仿真
  • 告别低效内耗:2025中小企业办公新方式
  • 微信7.0.6提示升级问题解决方法