在 MySQL 中搜索逗号分隔列表
处理包含逗号分隔 ID 列表的 MySQL 字段时(例如,“ 12,13,14,16"),使用 LIKE 运算符专门搜索该列表中的某些值变得具有挑战性。
面临此问题的用户寻求一种搜索特定值的方法(例如, “1”)在这样的字段内。但是,使用“SELECT ... WHERE field LIKE '%1%'”这样的查询将导致获取几乎所有条目,因为该字段中 ID 普遍在 10-20 范围内。
为了解决这个问题,用户考虑改为搜索“%1,%”。但是,这种方法不适用于字段中的第一个和最后一个 ID。
解决方案:FIND_IN_SET 函数
解决方案在于利用 MySQL 中的 FIND_IN_SET 函数。 FIND_IN_SET 采用两个参数:要搜索的字符串和要在其中搜索的逗号分隔字符串。它返回搜索字符串中正在搜索的字符串的位置,如果未找到,则返回 0。
在这种情况下,要在字段中搜索“1”,查询将为:
SELECT ... WHERE FIND_IN_SET('1', field)
此查询将仅返回字段中以逗号分隔的 ID 列表中存在“1”的行。
以上是如何在 MySQL 中高效搜索逗号分隔列表中的特定值?的详细内容。更多信息请关注PHP中文网其他相关文章!