阅读量:2
FIND_IN_SET() 是 MySQL 函数,用于在一个以逗号分隔的字符串中查找一个值的位置
- 使用
LIKE语句:
SELECT * FROM table_name WHERE concat(',', set_column, ',') LIKE '%,value,%';
- 使用
REGEXP或RLIKE(这两个是等价的):
SELECT * FROM table_name WHERE set_column REGEXP '[[:<:]]value[[:>:]]';
- 使用
INSTR()函数:
SELECT * FROM table_name WHERE INSTR(CONCAT(',', set_column, ','), CONCAT(',', 'value', ',')) > 0;
- 使用
LOCATE()函数:
SELECT * FROM table_name WHERE LOCATE('value', CONCAT(',', set_column, ',')) > 0;
- 如果可能的话,修改数据库结构。将逗号分隔的字符串列更改为单独的关联表,并使用标准的 JOIN 查询。这样做的好处是查询性能更高,且易于维护。
请注意,这些替代方案可能不如 FIND_IN_SET() 性能高,尤其是在大型数据集上。在选择替代方案时,请确保它们满足您的性能需求。
以上就是关于“MySQL FIND_IN_SET的替代方案”的相关介绍,筋斗云是国内较早的云主机应用的服务商,拥有10余年行业经验,提供丰富的云服务器、租用服务器等相关产品服务。云服务器资源弹性伸缩,主机vCPU、内存性能强悍、超高I/O速度、故障秒级恢复;电子化备案,提交快速,专业团队7×24小时服务支持!
简单好用、高性价比云服务器租用链接:https://www.jindouyun.cn/product/cvm