溫馨提示×

MySQL FIND_IN_SET的替代方案

小樊
114
2024-09-13 18:39:44
欄目: 云計算

FIND_IN_SET() 是 MySQL 函數(shù),用于在一個以逗號分隔的字符串中查找一個值的位置

  1. 使用 LIKE 語句:
SELECT * FROM table_name WHERE concat(',', set_column, ',') LIKE '%,value,%';
  1. 使用 REGEXPRLIKE(這兩個是等價的):
SELECT * FROM table_name WHERE set_column REGEXP '[[:<:]]value[[:>:]]';
  1. 使用 INSTR() 函數(shù):
SELECT * FROM table_name WHERE INSTR(CONCAT(',', set_column, ','), CONCAT(',', 'value', ',')) > 0;
  1. 使用 LOCATE() 函數(shù):
SELECT * FROM table_name WHERE LOCATE('value', CONCAT(',', set_column, ',')) > 0;
  1. 如果可能的話,修改數(shù)據(jù)庫結(jié)構(gòu)。將逗號分隔的字符串列更改為單獨的關(guān)聯(lián)表,并使用標準的 JOIN 查詢。這樣做的好處是查詢性能更高,且易于維護。

請注意,這些替代方案可能不如 FIND_IN_SET() 性能高,尤其是在大型數(shù)據(jù)集上。在選擇替代方案時,請確保它們滿足您的性能需求。

0