私はPostgreSQL 9.6を使用していて、次のような2つの列を持つ「ItemDbModel」という名前のテーブルがあります。
No integer,
Content jsonb
私が次のような多くのレコードを置いたとしましょう:
"No": 2, {"obj":"x","Item": {"Name": "BigDog", "Model": "NamedHusky", "Spec":"red dog"}}
"No": 4, {"obj":"x","Item": {"Name": "MidDog", "Model": "NamedPeppy", "Spec":"no hair"}}
"No": 5, {"obj":"x","Item": {"Name": "BigCat", "Model": "Tomcat", "Spec":"blue color"}}
テーブルをクエリするにはどうすればよいですか?
そして「Content.Item.Name.length」で注文しますか?
ありがとうございました!
JSON関数と演算子 に慣れる必要があります。
-- #1
select *
from example
where content->'Item'->>'Name' ilike '%dog%'
and content->'Item'->>'Spec' ilike '%red%'
-- #2
select *
from example
where content->'Item'->>'Name' ilike '%dog%'
or content->'Item'->>'Spec' ilike '%red%'
-- #3
select distinct on(no) t.*
from example t,
lateral jsonb_each_text(content->'Item')
where value ilike '%dog%';
-- and
select *
from example t
order by length(content->'Item'->>'Name');