查询以在 jsonb PSQL 中搜索数组元素

Query to search over array elements inside jsonb PSQL

我有一个 JSON 节点,我必须在其上编写 PSQL 查询,我的 table 模式名称(字符串),tagValues(jsonb)。下面给出了示例 tagValue 数据

Name_TagsTable

 uid |       name(String)|          tagValues(jsonb)
-----+-------------------+-----------------------------
   1 |     myName        |    { "tags": ["xyz","pqr","xyp"]}  

我需要一个 returns 所有行的查询,以便在 table

的 tagValues 上进行搜索“pq”
select * 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%');