2016-12-11 5 views
0

タイトルに記載されているように、複数の行で全文検索を実行するクエリを試行しています。また、nsonデータのjsonbデータ型です。次の:PostgreSQL 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
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

関連する問題