我有一个逗号分隔的字符串,例如“ 1,2,3”,并且表中的一列还包含逗号分隔的值,例如“ 1,2,4,5,3”。如何获取与任何值匹配的所有记录,以任何值。
例如
如果我搜索字符串“ 1,2,3”,则应该记录该类别包含1或2或3或1,2或1,3或2,3或1,2,3。它不应返回重复的值,因为我们可以将它们分组。
是否可以通过单个查询获取所有记录。
答案 0 :(得分:0)
尝试一下:
select * from table where category IN (1,2,3);
答案 1 :(得分:0)
您不应在字符串中存储ID列表。原因如下:
但是,有时您会被其他非常,非常,非常,非常非常糟糕的数据建模决策所困扰。您可以使用正则表达式执行某些操作:
where category regexp replace($string, ',', '|')
或更准确地说:
where concat(',', category, ',') regexp concat(',', replace($string, ',', ',|,'), ',')