MySQL FIND_IN_SET的替代方案

   2024-09-30 3270
核心提示:FIND_IN_SET() 是 MySQL 函数,用于在一个以逗号分隔的字符串中查找一个值的位置使用 LIKE 语句:SELECT * FROM table_name

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() 性能高,尤其是在大型数据集上。在选择替代方案时,请确保它们满足您的性能需求。

 
举报打赏
 
更多>同类物流大全
推荐图文
推荐物流大全
点击排行

网站首页  |  关于我们  |  联系方式 | 网站留言    |  赣ICP备2021007278号