【发布时间】:2017-11-26 10:18:43
【问题描述】:
我的 JSON 数据如下所示:
[{
"id": 1,
"payload": {
"location": "NY",
"details": [{
"name": "cafe",
"cuisine": "mexican"
},
{
"name": "foody",
"cuisine": "italian"
}
]
}
}, {
"id": 2,
"payload": {
"location": "NY",
"details": [{
"name": "mbar",
"cuisine": "mexican"
},
{
"name": "fdy",
"cuisine": "italian"
}
]
}
}]
给定一个文本“foo”,我想返回所有包含这个子字符串的元组。但我无法弄清楚如何编写相同的查询。
我关注了this related answer,但不知道该怎么做LIKE。
这就是我现在的工作:
SELECT r.res->>'name' AS feature_name, d.details::text
FROM restaurants r
, LATERAL (SELECT ARRAY (
SELECT * FROM json_populate_recordset(null::foo, r.res#>'{payload,
details}')
)
) AS d(details)
WHERE d.details @> '{cafe}';
我不想传递cafe 的整个文本,而是想传递ca 并获得与该文本匹配的结果。
【问题讨论】:
标签: sql postgresql pattern-matching jsonb postgresql-9.6