使用逗号分隔列表在列中查找逗号分隔值

Find comma separated value in a column by using comma separated list

我有一个列 item_id_list,其中包含逗号分隔的 ID,例如:

我可以使用 FIND_IN_SET() 搜索它们,例如:

SELECT * FROM task_detail WHERE FIND_IN_SET('21', item_id_list)

但我需要检查该行中是否确实存在多个 ID,但添加另一个 ID 进行搜索将无法像文档中所述那样工作。

https://dev.mysql.com/doc/refman/8.0/en/string-functions.html#function_find-in-set

This function does not work properly if the first argument contains a comma (,) character.

SELECT * FROM task_detail WHERE FIND_IN_SET('21, 79', item_id_list)

在不改变我的 table 结构的情况下,如何解决这个问题?现在按 id 数循环 FIND_IN_SET() 是解决方案。

您可以将 OR 与 find_in_set

结合使用
    SELECT * FROM task_detail 
    WHERE FIND_IN_SET('21', item_id_list)
    OR  FIND_IN_SET('79', item_id_list)