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]);
相关推荐
羑悻的小杀马特27 分钟前
PostgreSQL + Cpolar 组合拳,彻底打破局域网限制,远程访问数据库像本地一样简单
数据库·postgresql
松涛和鸣35 分钟前
DAY61 IMX6ULL UART Serial Communication Practice
linux·服务器·网络·arm开发·数据库·驱动开发
二哈喇子!3 小时前
MySQL数据库概述
mysql
二哈喇子!7 小时前
MySQL数据更新操作
数据库·sql
二哈喇子!7 小时前
MySQL命令行导入数据库
数据库·sql·mysql·vs code
心动啊1217 小时前
SQLAlchemy 的使用
数据库
曾经的三心草8 小时前
redis-2-数据结构内部编码-单线程-String命令
数据结构·数据库·redis
二哈喇子!9 小时前
基于SSM框架的公交车查询系统的设计与实现
java·数据库·ssm
Coder_Boy_9 小时前
基于SpringAI的在线考试系统-智能考试系统-学习分析模块
java·开发语言·数据库·spring boot·ddd·tdd
阿杰 AJie9 小时前
MySQL 聚合函数总表(完整版)
数据库·mysql