postgresql - JSON中的Postgres查询数组元素?
问题描述
我有一个名为 fb_designs 的 Postgres 11 表,其中有一json
列的数据结构如下:
{
"listings": [
{
"id": "KTyneMdrAhAEKyC9Aylf",
"active": true
},
{
"id": "ZcjK9M4tuwhWWdK8WcfX",
"active": false
}
]
}
和格式为 so的tags
列。两个长度都是未定义的。character varying[]
{dWLaRWChaThFPH6b3BpA,BrYiPaUiou020hsmRugR}
我想做的是产生一些查询,让我用外行的话来说,
显示所有 items.listings 处于活动状态且标签包含的所有结果
BrYiPaUiou020hsmRugR
我已经做到了这一点,但是我不确定如何添加WHERE uid = "foo"
,WHERE tags contains "foo", "bar
并且WHERE title is like %hoot%
SELECT id, title, tags, selected_preview_image, items
FROM fb_designs r, json_array_elements(r.items#>'{listings}') obj
WHERE obj->>'active' = 'true'
GROUP BY id
解决方案
如果它们都是真的,那么它们都不是假的。听起来您想否定包含错误的遏制操作。
select * from fb_designs where
not items::jsonb @> '{"listings":[{"active": false}]}'
and tags && ARRAY['BrYiPaUiou020hsmRugR']::varchar[]
推荐阅读
- python - 为 SQL 机器学习安装 microsoftml 和 revoscalepy
- javascript - 为什么我的 Javascript 代码中的随机数是连接而不是添加?
- python - 在 for 循环中酸洗列表
- docker - 如何在 filebeat.yml 文件中使用变量
- visual-studio - Visual Studio 中缺少 macOS 模板
- c# - 我有一张收据表格,我需要将此表格 tex 框链接到其他表格中的其他文本框,我该怎么做?
- sql - 如何在动态 SQL 中包含中断?
- java - 如何在 Secure_CRT 上远程编辑 zip 内的文件?
- java - 使用超类的变量访问派生类的对象
- angular - 从服务器获取数据后,角度材料表排序不起作用