6

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

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

我是正则表达式的新手,任何人都可以帮忙。谢谢

4

1 回答 1

16
REGEXP '(^|,)(1|3|6|7|11)(,|$)'

将匹配包含一个序列号的所有值1,3,6,7,11

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

编辑后的答案

于 2013-05-25T07:07:08.410 回答