我有一个JSON节点,我必须写一个PSQL查询,我的表模式名称(字符串),tagValues(jsonb)。tagValue数据示例如下
Name_TagsTable
uid | name(String)| tagValues(jsonb)
-----+-------------------+-----------------------------
1 | myName | { "tags": ["xyz","pqr","xyp"]}
我需要一个查询,返回搜索的所有行"pq">
表的tagValuesselect * from Name_TagsTable where tagValues->tags contains %pq%
您可以使用LIKE
运算符并将JSONB
值转换为字符串类型,例如
SELECT *
FROM Name_TagsTable
WHERE (tagValues->'tags')::TEXT LIKE '%pq%'
您需要打开元素的嵌套,然后您可以在应用LIKE条件的WHERE条件中使用它。
select nt.*
from name_tagstable nt
where exists (select *
from jsonb_array_elements_text(tagvalue -> 'tags') as a(tag)
where a.tag like '%pg%');