gpt4 book ai didi

postgresql - 在 jsonb 字段内深度搜索 PostgreSQL

转载 作者:行者123 更新时间:2023-11-29 11:53:33 24 4
gpt4 key购买 nike

我的数据示例如下所示:

{"city": "NY", 
"skills": [
{"soft_skills": "Analysis"},
{"soft_skills": "Procrastination"},
{"soft_skills": "Presentation"}
],
"areas_of_training": [
{"areas of training": "Visio"},
{"areas of training": "Office"},
{"areas of training": "Risk Assesment"}
]}

我想运行一个查询来查找具有 soft_skills 分析 的用户,并可能运行另一个查询来查找培训领域为 Visio风险评估的用户

我的列类型是 jsonb。如何对这些深度嵌套的对象执行搜索查询?使用 SELECT * FROM mydata WHERE content::json->>'city'='NY';

对城市进行一级查询

如何使用 LIKE 关键字或字符串匹配深度嵌套的值来运行匹配?

最佳答案

1)

SELECT * FROM mydata
WHERE content->'skills' @> '[{"soft_skills": "Analysis"}]';

2)

SELECT * FROM mydata
WHERE content->'areas_of_training' @> '[{"areas of training": "Visio"},{"areas of training": "Risk Assesment"}]';

About JSON(B) operators

PS:并为极慢的查询做好准备。我强烈建议考虑data normalization .


LIKE 的更新

对于您的示例数据,它可以是:

SELECT * FROM mydata
WHERE EXISTS (
SELECT *
FROM jsonb_array_elements(content->'areas_of_training') as a
WHERE a->>'areas of training' ilike '%vi%');

但是查询高度依赖于实际的JSON结构。

关于postgresql - 在 jsonb 字段内深度搜索 PostgreSQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45000199/

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