Mysql REGEXP二进制sql语法问题

Mysql REGEXP二进制sql语法问题,mysql,sql,regex,Mysql,Sql,Regex,我有这个$value=24153 我有一个字段可以保存一个或多个值,如{“id”:“2”,“value”:[“3”]}或类似{“id”:“2”,“value”:[“3”,“4”]}或{“id”:“2”,“value”:[“3”,“4”,“2”} 我有一个正则表达式,它可以正常工作,但是如果存在一个值,它就会返回。 我需要改进这个正则表达式,以便在字段中有多个值的情况下使用 REGEXP BINARY \'(.*{"id":"2","value":\["[^\"]*['.$value.'][^\"

我有这个
$value=24153
我有一个字段可以保存一个或多个值,如
{“id”:“2”,“value”:[“3”]}
或类似
{“id”:“2”,“value”:[“3”,“4”]}
{“id”:“2”,“value”:[“3”,“4”,“2”}
我有一个正则表达式,它可以正常工作,但是如果存在一个值,它就会返回。 我需要改进这个正则表达式,以便在字段中有多个值的情况下使用

REGEXP BINARY \'(.*{"id":"2","value":\["[^\"]*['.$value.'][^\"]*",?)+\]}.*\'

这里有一个regexp,它可以做你想做的事情——但我必须同意你的常识——存储json,然后使用regex从中提取数据令人恶心


-1用于在数据库中存储JSON,然后使用REGEXP进行搜索。这唯一的想法让我感到恶心。好的,这里是返回结果SELECT的旧查询。。。和额外的字段REGEXP二进制“(.*{“id”:“2”,“value”:[“[^\”]*[1][^\“]*”,?)+]}.*”按i.id DESC排序,但仅基于$subject\a结构。这是一个不返回任何内容的新查询!选择。。。和额外的_字段REGEXP BINARY'{“id”:“2”,“value”:[(“|\d |,)*“1”(“|\d |,)*]”按i.id DESCSELECT*的顺序排列,其中列REGEXP BINARY'{“id”:“2”,“value”:[[0-9”]*“4”[0-9”,]*]),假设4是您的值
$value = 4;
$subject_a = '{"id":"2","value":["4"]}';
$subject_b = '{"id":"2","value":["1","4","1","1"]}';
$subject_c = '{"id":"2","value":["1","1","1","1","1","44","1","1"]}';
$pattern = '/{"id":"2","value":\[("|\d|,)*"' . $value . '"("|\d|,)*\]/';

$matches[0] = preg_match($pattern,$subject_a);
$matches[1] = preg_match($pattern,$subject_b);
$matches[2] = preg_match($pattern,$subject_c);

echo '<pre>';
var_dump($matches);
echo '</pre>';
array(3) {
   [0]=> int(1)
   [1]=> int(1)
   [2]=> int(0)
}
REGEXP BINARY \'(.*{"id":"2","value":\[("[^\"]*",)*"'.$value.'"(,"[^\"]*")*)+\]}.*\'