如何匹配“中的2个”;“1,2,7,9,13,3,10,4,21,6,12”;在MySQL中?

如何匹配“中的2个”;“1,2,7,9,13,3,10,4,21,6,12”;在MySQL中?,mysql,regex,Mysql,Regex,我不熟悉MySQL中的正则表达式。< > >代码>像'%,2,% '/Cube >在中间匹配,像“2,%”/代码>在开始时匹配,像“%,2”< /代码>匹配结束,精确匹配,您可以使用 =“2”< /代码> 更新:要处理所有情况,可以使用或、X,如“%”、2、%”或X,如“2、%”或X,如“%”、2或X='2' SELECT '1,2,7,9,13,3,10,4,21,6,12' REGEXP '(^2$)|(^2,)|(,2,)|(,2$)' AS matches 它可能可以微调,但应该可以

我不熟悉MySQL中的正则表达式。< > >代码>像'%,2,% '/Cube >在中间匹配,<代码>像“2,%”/代码>在开始时匹配,<代码>像“%,2”< /代码>匹配结束,精确匹配,您可以使用<代码> =“2”< /代码>

更新:要处理所有情况,可以使用或、
X,如“%”、2、%”或X,如“2、%”或X,如“%”、2或X='2'

SELECT '1,2,7,9,13,3,10,4,21,6,12' REGEXP '(^2$)|(^2,)|(,2,)|(,2$)' AS matches
它可能可以微调,但应该可以工作


另外,请不要使用主题来写整个问题,以测试您可以使用的字符串中是否存在该值

mysql> SELECT FIND_IN_SET(15, '1,2,15,4,5,6');
+---------------------------------+
| FIND_IN_SET(15, '1,2,15,4,5,6') |
+---------------------------------+
|                               3 |
+---------------------------------+
1 row in set (0.00 sec)
然后测试它是否大于0(如果没有找到匹配项,则返回0)。

不过,您真正想解决的问题是什么?这闻起来像是糟糕的设计


(我没有看到任何评论框,可能是因为缺少代表,因此作为答案发布。)

您想匹配什么?数字“2”或两个数字?不确定MySQL,但是
\b2\b
在这里可以很好地工作。另外,请不要用答案来评论这个问题,除非它是相关的。