一、背景
在做电商项目时,会遇到这样的一种情况,mysql数据库中商品表tb_product里面有个字段type,它存储的是商品类型,比如:
1:热门推荐;
2:精选推荐;
3:品牌商品等。
有些商品既属于热门推荐,也属于精选推荐,同时还是品牌商品,系统中type中用 1,2,3 这样的格式存储。
这时业务人员希望你帮忙导出今日所有type中有3品牌商品的商品,你会怎么做?
这时find_in_set函数就派上用场了。
select * from tb_article where find_in_set('3',type);
二、find_in_set函数的语法
FIND_IN_SET(str,strlist)
str 要查询的字符串
strlist 字段名 参数以”,”分隔 如 (1,2,6,8)
查询字段(strlist)中包含(str)的结果,返回结果为null或记录。
例子:
mysql> SELECT FIND_IN_SET('b', 'a,b,c,d');
-> 2 因为b 在strlist集合中放在2的位置 从1开始。
二、常见用法
1、find_in_set() 和 in 的区别:
FIND_IN_SET(str,strlist)
strlist是常量,则可以直接用IN
例子:
select * from user where user_id in (1,2,3); ----可以用IN。
select * from user where user_id in (list); ---不可用,返回为空。list为一个变量。
select * from user where user_id find_in_set('1',list);-- 可用,正确返回。
2、find_in_set() 和 like的区别:
like是广泛的模糊匹配,字符串中没有分隔符,Find_IN_SET 是精确匹配,字段值以英文”,”分隔
例子:
SELECT * FROM users WHERE limits LIKE '%2%';
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix