gpt4 book ai didi

json - 用于按条件过滤 JSONB 数组的任何元素的 WHERE 子句?

转载 作者:行者123 更新时间:2023-11-29 11:58:25 26 4
gpt4 key购买 nike

在 PostgreSQL 中,使用 JSONB 列,我可以存储值数组。在 WHERE 子句中,我可以通过对各个数组项执行比较来过滤这些数组。

例如,我可以使用 WHERE CAST 检查 “数组 data 的第一项是否转换为大于 5 的数字?” ((data -> 0) AS FLOAT) > 5.

我希望能够做的是检查“是数组数据任何项,转换为大于5的数字?”

有没有办法在 PostgreSQL 查询中执行此操作,而不是先获取所有数据然后手动执行此过滤器?

最佳答案

使用函数jsonb_array_elements_text(),示例:

with my_table (id, data) as (
values
(1, '[1,2,3]'::jsonb),
(2, '[4,5,6]'::jsonb)
)

select *
from my_table
where exists (
select
from jsonb_array_elements_text(data)
where value::float > 5
)

id | data
----+-----------
2 | [4, 5, 6]
(1 row)

关于json - 用于按条件过滤 JSONB 数组的任何元素的 WHERE 子句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49999758/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com