【问题标题】:How to get the value of jsonb data using only the key number id?如何仅使用键号 id 获取 jsonb 数据的值?
【发布时间】:2021-07-27 14:49:45
【问题描述】:

我有一个包含以下数据的 jsonb 列:

{"oz": "2835", "cup": "229", "jar": "170"}

我有代表第一项“oz”的密钥号0。如何使用0 提取此值?

我在想类似的事情:

SELECT units->[0] as test

我只有密钥 ID 来引用这些数据。我没有键名“oz”。

【问题讨论】:

    标签: sql postgresql jsonb


    【解决方案1】:

    听起来是个可怕的主意。但是你仍然可以创建一个函数来实现这个可怕的想法:

    create function jsonb_disaster(jsonb,int) returns jsonb language SQL as $$ 
        select value from jsonb_each($1) with ordinality where ordinality=1+$2
    $$;
    
    
    select jsonb_disaster('{"oz": "2835", "cup": "229", "jar": "170"}',0);
     jsonb_disaster 
    ----------------
     "2835"
    

    您也可以创建自己的运营商来结束这场灾难:

    create operator !> ( function = jsonb_disaster, leftarg=jsonb, rightarg=int);
    
    select '{"cup": "229", "jar": "170", "oz": "2835"}' !> 1;
     ?column? 
    ----------
     "229"
    

    【讨论】:

      猜你喜欢
      • 2018-03-11
      • 1970-01-01
      • 2021-03-22
      • 1970-01-01
      • 2021-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多