使用逗号分隔列表在列中查找逗号分隔值
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)
我有一个列 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)