【发布时间】:2014-07-07 23:10:01
【问题描述】:
我正在查询一个表,该表有一个列,其中 member_ids 填充在管道分隔的字符串中。我需要返回与特定 member_id 存在“完全”匹配的所有行。如何处理字符串中可能与我的 ID 的“部分”匹配的其他 ID?
我可能有如下几行:
1|34|11|23
1011
23|1
5|1|36
64|23
如果我想返回 member_id 为“1”(第 1、3 和 4 行)的所有行,则无需提取所有行并分解列以检查结果数组中的任何项目是否匹配。
【问题讨论】:
-
你可以用逗号
REPLACE()|并将其提供给FIND_IN_SET()。肯定会很慢。如果您有能力对其进行重构并将其正确规范化为一对多表关系,那么这是一个更好的长期计划。 -
事实上,这正是那个实现:stackoverflow.com/questions/18850372/…
-
@MichaelBerkowski 感谢您的建议。这是由第三方加载项存储在 CMS 中的数据。与其尝试使用它,不如使用更明智的底层存储方法简单地编写我自己的解决方案可能更明智。 :)