首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我如何选择“职业”?

我如何选择“职业”?
EN

Stack Overflow用户
提问于 2015-06-07 18:19:04
回答 2查看 85关注 0票数 3

我有以下几点:

代码语言:javascript
复制
SELECT * 
FROM (
   SELECT '{"people": [{"name": "Bob", "occupation": "janitor"}, {"name": "Susan", "occupation": "CEO"}]}'::jsonb as data
) as b 
WHERE data->'people' @> '[{"name":"Bob"}]'::jsonb;

我正在过滤对象{“名称”:"Bob",“职业”:“门卫”}‘

我该如何回鲍勃的职业(“看门人”)?

代码语言:javascript
复制
SELECT data->'people'->>'occupation'  
FROM (
   SELECT '{"people": [{"name": "Bob", "occupation": "janitor"}, {"name": "Susan", "occupation": "CEO"}]}'::jsonb as data
) as b 
WHERE data->'people' @> '[{"name":"Bob"}]'::jsonb;

返回

代码语言:javascript
复制
?column?
--------
NULL

寻找:

代码语言:javascript
复制
occupation
----------
janitor
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-07 18:53:59

如果您不关心jsonb所在行中的任何其他元素,则可以从jsonb中提取所有元素,然后将它们作为单独的元素进行选择。

代码语言:javascript
复制
SELECT data->>'occupation' as occupation
FROM (
  SELECT jsonb_array_elements(
    '{"people": 
       [
         {"name": "Bob", "occupation": "janitor"}, 
         {"name": "Susan", "occupation": "CEO"}
       ]
     }'::jsonb->'people') as data) as b
WHERE data @> '{"name":"Bob"}';

结果

职业janitor (1行)

票数 1
EN

Stack Overflow用户

发布于 2015-06-07 19:22:50

您的“人员”元素是一个数组。您可以使用jsonb_array_elements函数获取数组的元素。之后,您可以在person->>'name'上进行筛选。

代码语言:javascript
复制
SELECT  person->>'occupation' as occupation
FROM    (
        SELECT  person.value as person
        FROM    (
                SELECT     
                  '{"people": 
                     [
                       {"name": "Bob", "occupation": "janitor"}, 
                       {"name": "Susan", "occupation": "CEO"}
                     ]
                   }'::jsonb as data
                ) a
        CROSS JOIN
                jsonb_array_elements(data->'people') as person
        ) b
WHERE   person->>'name' = 'Bob';

注意,->>返回文本,而->返回jsonb

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30696915

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档