仅使用正则表达式搜索 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
函数
测试它
我的专栏看起来像这样
"{"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
函数