MySql REGEXP匹配两个逗号分隔的字符串

MySql REGEXP匹配两个逗号分隔的字符串,mysql,regex,Mysql,Regex,我有一个包含以下值的表: id | value | ----------------------- 1 | 1,2,5,8,12,20 | 2 | 11,25,26,28 | ----------------------- 现在我想从上面的值列中搜索一些逗号分隔的ID,例如“1,3,6,7,11” SELECT id FROM tbl_name WHERE value REGEXP '*some reg exp goes here

我有一个包含以下值的表:

id    |    value      |
-----------------------
1     | 1,2,5,8,12,20 |    
2     | 11,25,26,28   |    
-----------------------
现在我想从上面的值列中搜索一些逗号分隔的ID,例如“1,3,6,7,11”

SELECT id FROM tbl_name  
WHERE value REGEXP '*some reg exp goes here containing 1,3,6,7,11*'
LIMIT 1,0;

SELECT id FROM tbl_name  
WHERE value REGEXP '*some reg exp goes here containing 3,6,27,15*'
LIMIT 1,0;
上述第一个查询应返回1,而第二个查询应返回NULL

我是正则表达式新手,任何人都能帮我。谢谢

REGEXP '(^|,)(1|3|6|7|11)(,|$)'
将匹配包含一个序列号的所有值
1,3,6,7,11

不应使用一列保存多个值。规范化数据


编辑的答案

为了确保我理解,它应该返回
1
,因为行上至少有一个数字与该id匹配?请注意,不要期望使用此数据格式的查询具有良好的性能,它将无法使用任何形式的索引,并且总是需要读取整个表来回答查询。换句话说,如果有几百行以上的数据,则不适合实时呈现网页。不,这应该是该行的id,如果至少有一行匹配,则返回是。您应该查看“一对多”关系。数字是否按数字顺序存储,搜索词中的数字是否也按数字顺序存储?谢谢@Michel,但我想匹配所提供字符串中的任何数字(至少一个)是否与值匹配,就像我的问题1中第一个字符串和值匹配一样。更新答案。这个值代表什么?随着值长度和表大小的增加,此查询将花费更多时间。如果你愿意,我可以帮你制定一个标准化