ThinkPhp8 框架使用 mysql find_in_set 函数

前言:

使用mysql 存储一些标签时 会使用逗号拼接的存储方法 比如 1,2,3,11

一般情况下 查询 1 可能会用到 like %1% 但这样查询的不够准确 因为11也会被查询到

如果每次都多一个逗号 1,2,3,11, 查询时 like %1,% 这样存储有点不太符合程序设计

解决方案

----------- 官网解释 --------------

FIND_IN_SET(str,strlist)

如果字符串 str 位于由 N 个子字符串组成的字符串列表 strlist 中,则返回 1 到 N 之间的值。字符串列表是一个 字符串由由字符分隔的子字符串组成。如果第一个参数是 常量字符串,第二个是 SET 类型的列,FIND_IN_SET() 函数为 优化为使用位算术。如果 str 不在 strlist 中,或者 strlist 是空字符串,则返回。 如果任一参数为 。此功能无法正常工作 如果第一个参数包含逗号 () 字符。,``0``NULL``NULL``,

----------- end --------------

mysql 有自己的解决方法 find_in_set

mysql where里可以直接用

sql 复制代码
where FIND_IN_SET(3, tags)

thinkphp8, thinkphp6 框架里的用法是这样的

php 复制代码
$obj->whereRaw(' find_in_set (:param, tags)', ['param' => $param]);
相关推荐
时光追逐者11 小时前
一款免费、简单、高效的在线数据库设计工具
数据库·mysql·oracle·sql server
another heaven11 小时前
【软考 2026 最新版 NoSQL 数据库全分类】
数据库·nosql
满天星830357711 小时前
【MySQL】表的操作
linux·服务器·数据库·mysql
yashuk11 小时前
Ubuntu 系统下安装 Nginx
数据库·nginx·ubuntu
F1FJJ12 小时前
VS Code 里管理 PostgreSQL,有哪些选择?主流扩展横向对比
网络·数据库·postgresql·容器
Bdygsl12 小时前
MySQL(8)—— 事务
数据库·mysql
IvorySQL12 小时前
直播回顾| PostgreSQL 18.3 x IvorySQL 5.3:开启 AI 数据库新纪元
数据库·postgresql·开源
编程之升级打怪12 小时前
数据库的实时同步和异步同步
数据库
captain37612 小时前
MySQL增删改查
数据库·mysql
IvorySQL12 小时前
PostgreSQL 技术日报 (3月27日)|当 AI 开始自动创建数据库
数据库·postgresql·开源