postgresql - JSONB字段过滤器特定对象中的Postgresql查询对象数组
问题描述
CREATE TABLE company (id SERIAL, companyJson JSONB);
CREATE INDEX comapny_gin_idx ON company USING gin (companyJson);
INSERT INTO company (id, companyJson)
VALUES (1, '[{"name": "t", "company": "company1"}]');
INSERT INTO company (id, companyJson)
VALUES (2, '[{"name": "b", "company":"company2"}, {"name": "b", "company":"company3"}]');
SELECT * FROM company WHERE companyJson @> '[{"company": "company2" , "name": "b"}]';
上述程序的输出是
2 [{"name": "b", "company": "company2"}, {"name": "b", "company": "company3"}]
无论如何要返回 {"name": "b", "company": "company2"} 而不是整行。
解决方案
您可以直接返回companyJson -> 0
包含->
操作数的第一个组件,通过参数零返回第一个组件:
SELECT companyJson -> 0 as companyJson
FROM company
WHERE companyJson @> '[{"company": "company2" , "name": "b"}]';
推荐阅读
- sql - 如何在 SQL Server 中将符号“'”替换为该符号“'”
- python - 如果另一个数据框中存在另一列的值,则将值插入列
- julia - 如何在 Julia 中转换向量中的项总和?
- jasperserver - Jasper Reports - 保存输入参数值
- python - 如何使绘图选项适用于图中的所有轴
- c++ - ORA-00917 如果将带有转义单引号的 SQL 语句传递给 OCIStmtExecute
- azure - 对多个项目使用单个部署组 azure devops
- javascript - 如何静态声明具有自定义属性的函数?
- java - 在 Spring-Data-Cassanda(启动)中获取/设置 PoolingOptions
- c# - 通过微服务保持身份数据同步的最佳方式?