PostgreSQL如何检查表中JSON类型列内是否存在指定属性值
PostgreSQL JSON字段属性查询方案
要查询Table1表中sess字段(JSON类型)的name属性值为Dan的记录是否存在,可使用以下两种方案:
- 方案1:用
->>运算符提取属性值比对->>可直接提取JSON顶层属性为文本格式,直接和目标值匹配即可:
SELECT EXISTS ( SELECT 1 FROM Table1 WHERE sess ->> 'name' = 'Dan' );
查询返回t即表示存在对应记录,返回f即表示不存在。
- 方案2:用
@>包含运算符匹配JSON结构
如果后续需要匹配多层JSON属性,用包含运算符写法更简洁,JSONB类型下还可借助GIN索引提升查询效率:
SELECT EXISTS ( SELECT 1 FROM Table1 WHERE sess @> '{"name":"Dan"}'::json );
小提示:如果你的sess字段实际存储为JSONB类型,仅需要将上述SQL里的
::json改成::jsonb即可正常运行。
内容的提问来源于stack exchange,提问作者guest99231
相关产品推荐
相关产品推荐

