PostgreSQL jsonb嵌套模式匹配多行

时间:2016-12-11 20:18:52

标签: json database postgresql jsonb

如标题中所述,我正在尝试执行一个查询,在多行上执行全文搜索,同样是jsonb数据类型,具有嵌套数据,问题如下:

CREATE TABLE books (id int primary key, title text, info jsonb);
INSERT INTO users (id, t, j) VALUES
(1, 'title 1', '{"Characters": [{"Name": "foo"}]}'),
(2, 'title 2', '{"Characters": [{"Name": "foo"},{"Name": "bar"}]}');
(3, 'title 3', '{"Characters": null}');

问题:

我想通过每本书中人物的名字来查询书籍。例如,使用名为" foo"的字符查询每本书。虽然上面的大纲只是一个例子,但我的真实生活场景要求我使用"〜*"来搜索角色的名字。操作

到目前为止我对此非常感到难过,所以任何帮助都会受到赞赏,谢谢。

1 个答案:

答案 0 :(得分:1)

with cte (id, title, Name) as
(
select id, title, jsonb_array_elements(info->'Characters')->>'Name' as Name
from books
where (info->>'Characters')::text is not null
)
select id, title, Name 
from cte
where Name like 'fo%';

在此处查看:http://rextester.com/TVKWC17198