可以说我有一个名为users
的表,其中jsonb
列名为attrs
,其值如下:
{
"uuid5": {
"label": "Email",
"value": "example@test.com.tw"
},
"uuid6": {
"label": "Last Name ",
"value": "Yang"
}
}
这里是单线:
"attrs": { "uuid5": { "label": "Email", "value": "example@test.com.tw" }, "uuid6": { "label": "Last Name ", "value": "Yang" }
如您所见,有唯一键uuid5
,uuid6
等。
如何使用标签=“电子邮件”和值=“ example@test.com.tw”吸引用户?
在postgres docs
中有关json函数的地方,有一个名为jsonb_each
的函数,它返回一组JSON对象键/值对。但是我找不到基于此写查询的方法。
答案 0 :(得分:2)
您需要jsonb_each
遍历attrs列中的所有条目。它将返回键/值对,其中键是uuid
,条目是您要检查的实际JSON结构。您可以将其与EXISTS条件结合使用:
select u.*
from users u
where exists (select *
from jsonb_each(u.attrs) as t(uid,entry)
where t.entry ->> 'label' = 'Email'
and t.entry ->> 'value' = 'example@test.com.tw')