MySQL - 使用正则表达式在group_concat中排除

时间:2013-11-18 11:22:43

标签: mysql

我正在运行一个返回类别和子类别数组的查询,这些类别和子类别由i,[digit]或c,[digit]表示。

我已经设法让串联工作替换了i,因此我可以在PHP中针对不同的表运行查询,其中i表示为简单的id。

现在,我想在结果中用c,[x位数]排除任何内容。

我已经设法通过regexPal(伟大的工具!)来运行正则表达式,但似乎无法让它在MySQL中运行。

原始查询

 select id, name, (Group_concat(replace(replace(arrange, 'i,', ''), '|', ','))) As  
 Products from cats
 where id = '19'

这个输出是:

 c,4331,c,290,c,292,c,282,c,284,c,285,c,4230,c,4228,c,4229,c,298,c,299,c,395,c,396,c,393,c,288,78,81

现在,我将此行添加到查询中:

 and arrange not regexp "c,[0-9]{1,10},"

预期的输出是78,81。但我仍然得到上面的全部输出。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我通过preg_replace的PHP函数修改了这个,而不是使用http://www.phpliveregex.com/上的这个优秀工具

我将查询结果传递给preg_replace,然后执行正确的正则表达式查找以排除字符串的匹配元素。

$ prodsarray2 = preg_replace(“/ c,[0-9] {0,10},/”,“”,$ prodsarray);

所以它是:

NEW STRING = preg_replace(正则表达式,替换文本,查找字符串)