仅使用正则表达式搜索 WHERE 值存在于 JSON 数组之一中

Search WHERE value is present in one of the JSON array using only regular expression

我的专栏看起来像这样

"{"a1":"{\"name\":[{\"id\":32,\"addId\":[28947,33268,48148,1594,57818,57819],\"hasPhone\":true}],\"phone\":[{\"phoneId\":5,\"selectionMode\":true}],\"phoneType\":[1],\"selectionMode\":\"GROUP\"}"}"

这是一个 JSON 字段,但我们仍在使用 postgres 9.2,因此 JSON 不支持搜索。

我必须获取 addId 为 28947 或 57818 的所有记录

请帮忙

这是一个匹配的正则表达式 addId\":[ 后跟任意数量的 , 和十进制数字,中间是您的幻数,以 ].

结尾
SELECT regexp_matches(json_column, 'addId\":\[[0-9,]*(28947|57818)[0-9,]*\]', 'g');

this site 对您的输入数据进行了测试。没有用实际的 regexp_matches 函数

测试它